home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / rbcomm34.zip / RBCOMM.DOC < prev    next >
Text File  |  1993-01-03  |  111KB  |  2,666 lines

  1. RBcomm v3.40  Copyright (c) 1989-1993 Ralf Brown  All Rights Reserved
  2.  
  3. You may redistribute this program provided that you provide unmodified
  4. copies of all files, and do not charge any fee for making the copy.
  5.  
  6. --------------------------------------------------------------------------
  7.  
  8.  
  9. RBcomm is a lean and mean comm program which will run in 46K without
  10. file transfer capability or 65K with file transfer capability. Since it
  11. is so lean, you will not get a lot of the fancy features of other comm
  12. programs, though there are plenty of features to let you get your work
  13. done (I've been using it exclusively for over five years, and have
  14. added features as I've found that I could be more productive with them
  15. than without).
  16.  
  17. Features:
  18.     small (runs in as little as 46K [65K with DSZ, 66K with Puma/MPt])
  19.     DESQview-aware
  20.     pop-up menus
  21.     'type' a file to the remote system, optionally expanding blank lines
  22.     seamless file transfer using DSZ, PCZ, or Puma/MPt
  23.     Zmodem and Puma/MPt autodownload (others easily added)
  24.     shell to DOS, using well under 1K while shelled
  25.     keyboard reassignment, powerful keystroke macros, "DOORWAY" mode
  26.     250-number dialing directory
  27.     ANSI/VT102, VT52, and AVATAR level 0 terminal emulations
  28.        [UnixWindows and AVATAR level 1 partially implemented]
  29.     ANSI music
  30.     132-column support
  31.     supports the 16550A UART's FIFOs and speeds to 115,200 bps
  32.        (a 4.77MHz 8088 can handle 19200)
  33.     scrollback buffer
  34.  
  35. Registration:
  36.     Continued use of DSZ requires registration with Omen Technology, Inc.
  37.     See the DSZ documentation for details.
  38.  
  39.     Continued use of Puma/MPt requires registration with Matthew Thomas.
  40.     See the Puma or MPt documentation for details.
  41.  
  42.     If you like RBcomm, send me a picture postcard of some sight in your
  43.     area.  If you don't like RBcomm, feel free to send me a postcard
  44.     anyway, telling me what you don't like.     I just might change the
  45.     thing you don't like in the next release.
  46.  
  47. Support:
  48.     None (after all, I'm not getting any money for this).  I will try to
  49.     fix bugs as time allows.  When reporting a suspected bug, please
  50.     include as much detail as possible (such as a verbose log if it
  51.     involves the terminal emulation).
  52.  
  53. DISCLAIMER:  This software is distributed AS IS and without any express
  54.     or implied warranties.    The author disclaims all responsibility
  55.     for any damages which might be incurred as the result of using
  56.     or misusing* the program.  Although widely used by many people,
  57.     the software is not guaranteed to function on any system other
  58.     than the author's own. 
  59.       *RBcomm has the ability to overwrite or delete files, which can
  60.        result in data loss if used indiscriminately.
  61.  
  62.  
  63.     Ralf Brown            [valid until November 1, 1993]
  64.     813 Copeland Way, Suite 26
  65.     Pittsburgh, PA 15232
  66.  
  67.     Internet: ralf+@cs.cmu.edu
  68.     UUCP: {harvard,ucbvax,uunet}!cs.cmu.edu!ralf
  69.     BIT:  ralf%cs.cmu.edu@cmuccvma
  70.     FIDO: Ralf Brown 1:129/26.1
  71.  
  72. Files in the RBcomm distribution archive:
  73.     RBCOMM.DOC    this file
  74.     COMM.COM    the RBcomm main program
  75.     RBCONFIG.COM    the configuration program
  76.     MACRO.COM    the keyboard macro compiler
  77.     DVPWIDTH.COM    program to set maximum width in DESQview .DVP files
  78.     R?-PIF.DVP    DESQview program information files
  79.     *.MAC        keyboard macro definition sources
  80.     *.HLP        help screens for corresponding macro files
  81.     TERMCAP        Unix "termcap" entry for RBcomm
  82.  
  83. Availability:
  84.     The newest version is always available on:
  85.        SoundingBoard 1:129/26 File Requests
  86.        (412)621-4604
  87.        24 hours, USR HST 14.4
  88.  
  89.        CS.CMU.EDU [128.2.222.173]
  90.        directory /afs/cs.cmu.edu/user/ralf/pub
  91.        You must change directly to this directory with a single
  92.          command due to the way our anonymous FTP works.
  93.  
  94.     New versions will also be available here within a few days of release:
  95.        Rosedale Dataline
  96.        (301)866-4554
  97.        24 hours, USR HST 9600
  98.        TP Board
  99.  
  100.        Fidonet nodes participating in DVNet
  101.  
  102.        WSMR-SIMTEL20.ARMY.MIL [26.2.0.4]
  103.        directory PD:<MSDOS2.MODEM>
  104.  
  105. System Requirements:
  106.        IBM PC or close compatible
  107.        at least 46K free memory (65K for file transfers)
  108.        one or more serial ports
  109.        DOS 2.0 or higher
  110.        48-128K disk space or EMS or XMS memory for swapping, depending
  111.          on configuration
  112.  
  113. -------------------------------------------------------------------------------
  114. Installation
  115. ------------
  116.  
  117. Before you use RBcomm for the first time, you need to tell it where to find
  118. its support files and how to talk to the modem.     To do so, copy the RBcomm
  119. files to the directory in which you wish to install them, change to that
  120. directory, and type
  121.  
  122.     RBCONFIG CONFIG COMM.COM
  123.  
  124. (if COMM.COM is not in the current directory, use the full path, i.e.
  125. C:\COMM\COMM.COM, or RBCONFIG will not be able to find it)
  126.  
  127. Please do not use your original copy.  If you forget to run RBCONFIG, you
  128. will be told to do so when you attempt to run COMM.COM.
  129.  
  130. You will now be asked (via a menu) to fill in several groups of information.
  131. Note that you may use either forward slashes ('/') or backward slashes
  132. ('\') to separate directories in a pathname.
  133.  
  134. Press 'D' to set the directories and extensions to use.
  135.    RBcomm dir:    where the keyboard macro files and dialing directory are stored
  136.    Swap directory: where to store the swap file when running DSZ or COMMAND.COM
  137.         and neither EMS nor XMS is available.  A RAMdisk is ideal for
  138.         storing the swap file, which will be about 64K (the exact size
  139.         depends on your setup).
  140.    Use XMS if available:  if set to N, RBcomm will always swap to disk in the
  141.         directory specified by the previous item, or EMS if enabled.
  142.         If set to Y (default), RBcomm will swap to XMS memory if there
  143.         is enough available.
  144.    Use EMS if available:  if set to N, RBcomm will always swap to either XMS
  145.         (if available) or to disk.  If set to Y (default), RBcomm will
  146.         swap to EMS memory if XMS is unavailable and there is enough
  147.         free EMS.
  148.    Macro file extension:  default extension to apply to keyboard macro files
  149.    Default macro file:      keyboard macro file to load on startup and hangup
  150.         if this file does not exist, RBcomm will use a built-in set
  151.         of default key bindings
  152.  
  153. Press 'S' to select the serial port to use.  You may setup
  154. configurations for "COM1" through "COM4", as well as the default port to
  155. use when not otherwise indicated in the dialing directory. The values
  156. given for "COM3" and "COM4" need not bear any relationship to the
  157. numbering of the actual serial ports in your system (you could, for
  158. example, set them up to be the same as "COM1" except for the length of
  159. the break signal).  RBCOMM does check that "COM1" and "COM2" exist
  160. according to the BIOS data area, however, to avoid running in a DESQview
  161. window which has incorrect settings for supporting serial
  162. communications.     Break length specifies the length of the signal that is
  163. sent when you give the break command (default Alt-B) in multiples of the
  164. standard clock tick of 55ms.  You may specify a separate setup string
  165. for each port.    The setup string needs to ensure that the modem echos
  166. back any commands it is sent, and asserts carrier detect only while
  167. actually connected with another modem (for Hayes-compatible "AT" command
  168. sets, "E1&C1").
  169.  
  170. Press 'M' to define the modem setup.  In this section, you need to enter
  171. several strings to be sent to the modem.  Note that you may enter control
  172. characters such as ^M (carriage return) by pressing control-Q followed
  173. immediately by the desired control character.  You can enter a DEL (ASCII
  174. 127) by pressing Alt-D.  Since most modems nowadays use the Hayes 'AT'
  175. command set, the only entry you are likely to change is "dial prefix",
  176. which will be "ATDT" for touch-tone dialing or "ATDP" for pulse dialing.
  177.  
  178. Press 'R' to define the modem's responses.  These should be the minimum
  179. substring that uniquely identifies the response.
  180.  
  181. Press 'P' to setup dialing parameters.    You may specify the name of the
  182. dialing directory, how long to try before declaring a time-out, and how long
  183. to wait before trying again.
  184.  
  185. Press 'Z' to set the name of the program to run for Xmodem, Ymodem, and
  186. Zmodem transfers, and the parameters for the various types of file
  187. transfers.  The parameter entries all allow replaceable parameters
  188. introduced by a percent sign--see the EXEC macro command for details.
  189. An additional replacement of %F is available which expands to the
  190. name(s) of the file(s) to transfer.  Note that the default "portx" will
  191. cause DSZ to report the port as COM9, but it will still use the correct
  192. serial port.  You need to use "portx" if you will be using more than
  193. one serial port.
  194.  
  195. Press 'F' to setup Puma/MPt file transfers.  You may specify the name of
  196. the program to run for such transfers, and the upload and download
  197. parameters.
  198.  
  199. Press 'C' to set the colors you want RBcomm to use.  You may select the
  200. default and "underlined" colors, as well as the colors to use on menus
  201. and the scrollback viewer.
  202.  
  203. Press 'V' to determine whether 132-column mode should be enabled, whether
  204. to start in 132- or 80-column mode, and the register values needed to set
  205. 132-column mode.  When running under DESQview, RBcomm can tell DESQview to
  206. set the virtual screen size to 132 columns if you specify zero for AX.
  207. DESQview will then display as much as it can at one time; this is useful
  208. if you need a 132-column display but do not have a video board which
  209. supports 132 columns.
  210.  
  211. Press 'T' to adjust a number of toggles.  Many of these may also be changed
  212. from within RBcomm.
  213.    "Local echo" allows you to turn on half-duplex operation by default.
  214.    "Verbose" sets whether to include terminal control sequences in a log file.
  215.    "Strip parity bit" specifies whether the high bit should be stripped from
  216.       all incoming characters, even when parity is set to None.
  217.    "Visual bell" specifies whether to flash the screen instead of sounding a
  218.       beep when a ^G is received (internally-generated beeps always use sound).
  219.    "Should backspace send delete" specifies whether the values sent by
  220.       backspace and control-backspace should be exchanged.
  221.    "Check for enhanced keyboard" determines whether RBcomm will use the
  222.       enhanced keyboard BIOS calls if it thinks those calls exist.  Some
  223.       systems incorrectly indicate support for those calls.  Set this to
  224.       'N' if RBcomm appears to hang your system.
  225.    "May RBcomm to change NumLock" determines whether RBcomm will change the
  226.       state of the NumLock key when it receives the "keypad numeric mode" or
  227.       "keypad application mode" commands.  Disabling the NumLock changes is
  228.       useful for laptop users without a separate number pad.
  229.    "Save screen" specifies whether the current screen is saved prior to
  230.       executing external programs (except for file transfers) and restored
  231.       afterwards.  If the screen is saved, you will be asked to press a
  232.       key before the screen is restored.
  233.  
  234. Finally, press 'O' for miscellaneous options.
  235.    "Heap size" determines how much memory RBcomm allocates for macro files,
  236.       macro execution, and some of RBcomm's own processing.  This must be
  237.       set to at least 800 bytes more than the size of the largest macro
  238.       (.RBM) file.  A larger setting will not harm, but will needlessly
  239.       use more memory.    Should you get an "out of memory" or "stack full"
  240.       error message, you will need to increase this value.  When set to
  241.       zero, RBcomm will grab as much heap space as it can (about 26K).
  242.    "Number of screens" specifies how many virtual terminals to allocate
  243.       space for.  This will become useful for the UnixWindows protocol;
  244.       most users will want to set this value to 1.
  245.    "Time between sends in idle mode" determines how often Idle mode (see
  246.       Alt-I) sends some characters to keep the connection alive when you
  247.       are not actively using RBcomm.
  248.    "String idle mode sends" specifies what characters to send to keep the
  249.       connection alive.
  250.    "Answerback message" allows you to specify the string which RBcomm will
  251.       send when it receives a ^E.  The ANSWERBACK macro command can override
  252.       this setting.
  253.    "Default pace character" determines which character RBcomm will wait for
  254.       after sending each line of text from the file being typed to the
  255.       remote system.  Setting this value to ^@ means that RBcomm will not
  256.       pause after each line.  This setting may be changed while RBcomm is
  257.       running by using the PACECHAR macro command.
  258.    "Use EMS for scrollback" determines whether RBcomm will allocate 32K
  259.       of expanded memory (if available) for the pager and scrollback
  260.       buffers.    If set to Y and at least 32K of EMS is available, RBcomm
  261.       will give you a 6K pager buffer and 26K scrollback buffer regardless
  262.       of the next two settings.
  263.    "Size of non-EMS pager buffer" determines how much memory RBcomm will
  264.       allocate for the file pager's buffer when EMS is not available or
  265.       has been disabled.  Larger values can improve the pager's performance
  266.       on files with long lines, but values greater than 6-8K will not have
  267.       much of an effect unless you have an extremely large screen.  Values
  268.       smaller than the number of characters on the screen will cause
  269.       significant slowdowns when viewing files or displaying a directory,
  270.       due to thrashing as RBcomm constantly re-reads data.
  271.    "Size of non-EMS scrollback buffer" determines how much memory RBcomm
  272.       will set aside for storing text received from the serial port.  As
  273.       new text comes in, the oldest will be discarded.    Whatever text is
  274.       in the scrollback buffer may be viewed with Alt-O.
  275.  
  276. On choosing "Quit" from the menu, you will be asked whether to save the
  277. new configuration to disk.  If you specify that you want to save the changes,
  278. the executable on disk will be updated.
  279.  
  280. ---------------------
  281. DESQview Installation
  282. ---------------------
  283.  
  284. After performing the file copy and configuration described in the
  285. previous section, you need to install RBcomm on the DESQview Open
  286. Window menu.  In DESQview, tap the Alt key to bring up the DESQview
  287. menu, then press "O" for the Open Window menu, and "AP" to add a
  288. program.  Select "Other", then fill in the directory in which you've
  289. placed the RBcomm files and press Enter.  You will be given the choice
  290. of RBcomm, RBcomm plus DSZ, and RBcomm 132col; select one or more and
  291. press Enter.  Now use "CP" from the Open Window menu to change the
  292. paths and/or the keys for starting RBcomm.
  293.  
  294. The only difference between "RBcomm" and "RBcomm + DSZ" is that the
  295. former allocates the minimum amount of memory for RBcomm to run (46K),
  296. which is not enough to invoke DSZ, but does save 19K when you do not
  297. need file transfer capability.  Should RBcomm complain about
  298. insufficient memory (the window exits almost instantly), decrease the
  299. heap size on the "Other options" menu in RBCONFIG.  If your environment
  300. is particularly large, you may need to use Change a Program to increase
  301. the window sizes by a K or two.  With certain screen sizes, you may
  302. also need to give RBcomm 1K of system memory (on the advanced options
  303. screen).
  304.  
  305. To get a 132-column display under DESQview, configure RBcomm to use
  306. 132-column mode and then make a .DVP file using "Change a Program"
  307. which has all fields except for "maximum width" set to the desired
  308. values.  Change a Program only allows 127 columns in the window, so
  309. choose an arbitrary size smaller than that.  After pressing Enter to
  310. save the .DVP, run the included DVPWIDTH program to change the maximum
  311. width to 132 columns, i.e.
  312.     DVPWIDTH 132 RZ-PIF.DVP 
  313. You must give the full name of the .DVP file, including the extension.
  314. Note that Change a Program will force you to change the window's width
  315. if you have set the width greater than 127 and run Change a Program
  316. again.
  317.  
  318. If you do not wish to use the DVPWIDTH program, or your version of
  319. DESQview experiences difficulties with a 132-column setting in the .DVP
  320. file, RBcomm can still use 132-column windows through an alternate
  321. method.  For this alternative, you must give it enough "system memory"
  322. to store the entire maximum-size screen.  Whatever memory is used to
  323. store the initial screen size set under "Window Position" is then
  324. wasted, so that size should be set fairly small (such as 15 columns by
  325. the desired number of rows).  If you are not interested in the reason,
  326. skip the rest of this paragraph.  DV normally reuses the same section
  327. of memory when resizing the virtual screen.  However, resizing it
  328. beyond the maximum defined by the .DVP causes an entire new buffer to
  329. be allocated.  Thus, minimizing the "maximum screen size" also
  330. minimizes the DESQview overhead by reducing the size of the screen
  331. buffer which gets discarded.
  332.  
  333. RBcomm is sufficiently DESQview-aware to ask DV for the size of the
  334. screen. If you want a 120x60 screen, just set the maximum window size
  335. to 120 columns and 60 rows.  DESQview will display as much as it can on
  336. your screen, but RBcomm will use the full size.  If you have enabled
  337. 132-column mode with RBCONFIG, RBcomm will also switch to 132 columns
  338. by the given number of rows when it receives the sequence "<Esc>[?3h".
  339.  
  340. RBcomm refuses to load itself twice on the same serial port when
  341. running under DESQview.  However, when shelled to DOS, you can load
  342. another copy in a different window, but make sure to exit the second
  343. copy before returning from the DOS shell, or the first copy will abort.
  344. The method RBcomm uses is compatible with ONLY1.SHP using the names
  345. "COM1" through "COM4" (depending on the serial port), so you can also
  346. keep RBcomm from conflicting with other programs that use a serial
  347. port, such as BBS mailers.
  348.  
  349. Finally, RBcomm returns the rest of its time-slice to DV if it doesn't
  350. need a full slice.  This improves the performance of programs in other
  351. windows, and makes supplemental programs such as TAME unnecessary (as
  352. phrased by TAME's author, RBcomm is "DV-polite").
  353.  
  354. -----------------------------------------------------------------------------
  355. Dialing Directory
  356. -----------------
  357.  
  358. The dialing directory is a specially formatted data file (rather than a
  359. plain text file) containing up to 250 entries.  This data file may be
  360. created and maintained with RBCONFIG (see Editing the Dialing Directory
  361. below).
  362.  
  363. For the convenience of those using RBcomm version 3.31 or earlier, or
  364. those wishing to distribute dialing entries for other RBcomm users,
  365. RBCONFIG has the capability to compile a plain text file into an RBcomm
  366. dialing directory.  In the plain text file, each dialing entry consists
  367. of two lines, looking like this, with no blank lines between entries:
  368.  
  369.     Doctor's WOC Inn
  370.     14126214604|4800N81|B|OPUS|password|\\N2
  371.  
  372. The first line contains the description which will be used on the dialing
  373. directory screen and when dialing.  The second line contains six fields
  374. separated by vertical bars.  These fields are
  375.  
  376.      1. number to dial (direct connection if empty)
  377.      2. modem parameters, containing in order
  378.       baud rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,
  379.              57600)
  380.       parity    (N for none, E for even, O for odd, S for space,
  381.              M for mark)
  382.       data bits (5, 6, 7 or 8)
  383.       stop bits (1 or 2)
  384.       handshake to use when receive buffer is full
  385.             (H for hardware RTS/CTS, X for software XON/XOFF)
  386.             (optional, default is hardware)
  387.       timed call flag
  388.             (if handshake present and the character after the handshake
  389.              is T, a short "bip" will sound about 50 seconds into each
  390.              minute after establishing a connection.  Every five
  391.              minutes, the "bip" sounds twice)
  392.       serial port number
  393.             (if handshake is present, following either the handshake
  394.              character or the "T" timed call flag with a comma and
  395.              the number of the serial port will tell RBcomm to switch
  396.              to that port before dialing)
  397.      3. terminal emulation
  398.       A for ANSI with VT102 extensions
  399.       B for ANSI-BBS (same as ANSI, but clearing screen also homes cursor,
  400.               character set switching is disabled, and the AVATAR
  401.               level 0 command set replaces two RBcomm private
  402.               commands)
  403.       V for VT52 with H19 extensions
  404.      4. keyboard macro file to load
  405.      5. password for this system (used by PASSWORD macro command).  Display of
  406.       passwords in the dialing directory may be turned on or off with
  407.       RBCONFIG.
  408.      6. optional modem setup string, minus command lead-in defined by RBCONFIG
  409.       (may include vertical bars).    In the example above, the \\N2 tells
  410.       my modem to use MNP error correction.
  411.  
  412. If the keyboard macro file field is non-empty, the specified file will
  413. be loaded immediately upon successfully connecting with the remote
  414. system.  Since each entry in the dialing directory can specify an
  415. independent set of keyboard macros, you can have a different set of
  416. keyboard bindings for each system. If the macro file specifies a
  417. binding for the ONLOAD "key", that macro will be executed immediately.
  418. Further, if the macro file specifies a binding for the AUTO "key", that
  419. macro will be executed immediately after the ONLOAD macro (if any).
  420.  
  421. The setup string may contain the following special sequences:
  422.     ~    pause for half a second
  423.     \n   send a line feed
  424.     \r   send a carriage return
  425.     \f   send a form feed
  426.     \t   send a horizontal tab
  427.     \a   send a ^G
  428.     \b   send a backspace
  429.     \!   send a break
  430.     \~   send a tilde
  431.     \\   send a backslash
  432.  
  433. Example modem parameters:
  434.     1200E71X     default COM port, 1200 bps, even parity, seven data
  435.              bits, one stop bit, use Xon/Xoff handshake when
  436.              receive buffer fills up
  437.     19200N81HT,2     COM2, 19,200 bps, no parity, eight data bits, one
  438.              stop bit, use hardware handshake, and sound off
  439.              every minute
  440.  
  441. Compiling the Dialing Directory
  442. -------------------------------
  443.  
  444. Once you have created a plain-text dialing file, you must compile it
  445. into the binary form used by COMM.COM.  The directory compiler is
  446. invoked with
  447.     RBCONFIG DIAL [-C<port>] <filename>
  448. where <filename> is the name of the dialing directory to compile and
  449. <port> is a number from 1 to 4 specifying which serial port is the
  450. default port when none is explicitly given in the file.  Any extension
  451. given with the filename is ignored; the text file always has the
  452. extension .DIR and the compiled binary file has the extension .RBD.
  453.  
  454. If you want to add entries from a dialing file to the dialing directory
  455. rather than creating a dialing directory from scratch, you can append
  456. new entries to an existing directory with
  457.     RBCONFIG DIAL [-A<port>] <dialdir> <filename>
  458.  
  459. Editing the Dialing Directory
  460. -----------------------------
  461.  
  462. To interactively edit a dialing directory, use
  463.     RBCONFIG DIAL -E <dialdir>
  464.  
  465. You may wish to read the section on the format of a plain-text dialing
  466. file for information on the various options, and the special characters
  467. you may use in the initialization string.
  468.  
  469.  
  470. -----------------------------------------------------------------------------
  471. Environment Variables
  472. ---------------------
  473.  
  474. RBcomm uses the following variables in its environment:
  475.  
  476. COMSPEC      specifies which program to load for Shell-to-DOS (Alt-D) and
  477.       Execute-Program (Alt-G).
  478.  
  479. RBCOMM      specifies default commandline options (which may be overridden by
  480.       the commandline).  See below for the valid options.  Note that only
  481.       the first 160 bytes will be used due to internal space limitations.
  482.  
  483. SWAPDIR      overrides the default swap directory, where RBcomm stores itself
  484.       when swapping to disk.
  485.  
  486. -----------------------------------------------------------------------------
  487. Commandline Options
  488. -------------------
  489.  
  490. RBcomm may be invoked with one or more options, described below.  These
  491. options are processed from left to right; if an option is present
  492. multiple times, the rightmost instance will be the one in effect.  The
  493. options in the RBCOMM environment variable (if present) are processed
  494. before the commandline, and thus are overridden by the commandline.
  495. Options are not case-sensitive.
  496.  
  497.     -B    use BIOS calls to display characters received from the
  498.         serial port (aka 'port check writes').  RBcomm's own
  499.         menus and messages will still use direct screen writes.
  500.         This option is primarily for the convenience of people
  501.         using screen readers.
  502.  
  503.     -Cn    select COMn, where 'n' may be 1 to 4.  This option
  504.         overrides the default set with RBCONFIG.
  505.  
  506.     -Ddir    set the RBcomm directory to 'dir'.  This option overrides
  507.         the RBCONFIG default.
  508.  
  509.     -Mfile    set the default macro file to use whenever not connected
  510.         to a remote system.  This option overrides the RBCONFIG
  511.         default.  Only the first 8 characters are used.
  512.  
  513.     -Nfile    set the RBcomm dialing directory to 'file'.  This option
  514.         overrides the RBCONFIG default; it replaces the RBCDIAL
  515.         environment variable used by prior releases.  Only the
  516.         first 12 characters are used; if no extension is given,
  517.         it defaults to .RBD.
  518.  
  519.     -Pparm    force default parameters for the current serial port.
  520.         Instead    of reading the port's parameters, RBcomm will
  521.         set them to the value specified here.  'parm' is in the
  522.         same format as used in the dialing directory, except
  523.         that the port number is not allowed.  You may intersperse
  524.         -C and -P options to set forced parameters for more than
  525.         one port.
  526.  
  527.     numlst    a list of numbers to dial as if typed at the dialing
  528.         directory (see Alt-Q below) prompt.  Each number must
  529.         be separated from the next by a comma.  No blanks are
  530.         allowed, as they signal the end of an argument on the
  531.         command line.
  532.  
  533. -----------------------------------------------------------------------------
  534. Memory Requirements
  535. -------------------
  536.  
  537. RBcomm's memory usage is approximately
  538.  
  539.      39.3K + heap size + screens + pager buffer + scrollback buffer
  540.  
  541. where
  542.      screens = number_of_screens * (max_size + 352)
  543.      max_size = greater of (2*rows*columns) for 80 and 132-column modes
  544.      pager buffer and scrollback buffer are both 0 if allocated in EMS
  545.  
  546. If there is insufficient memory, the scrollback buffer is shrunk; if there
  547. is still not enough memory, the pager buffer is shrunk as well.
  548.  
  549. -----------------------------------------------------------------------------
  550. Keyboard Commands
  551. -----------------
  552.  
  553. The commands described here may be bound to other keys, but the default
  554. keystroke named here may always be used when preceded by Alt-= (hold down
  555. the Alt key and press the equal sign at the upper right of the typewriter
  556. section of the keyboard).
  557.  
  558. Alt-A    attack dial
  559.  
  560.     Repeatedly dials the number you select from the dialing directory
  561.     until a connection is established.  You may also manually enter a
  562.     number to attack-dial.
  563.  
  564. Alt-B    send break
  565.  
  566. Alt-C    call a number
  567.  
  568.     Dial the number you select from the dialing directory (once only).
  569.     You may also manually enter a number to dial.  If you are currently
  570.     connected to another system, you will be prompted whether to hang
  571.     up.  Press Esc to abort the dial and return to the current session.
  572.     Press "Y" to disconnect and then dial a new number, or "N" to maintain
  573.     the current connection and load new macros and parameters without
  574.     dialing.
  575.  
  576.     Note that the modem parameters always have an "H" appended when neither
  577.     "H" nor "X" is present in the dialing directory, since the handshake
  578.     defaults to hardware.
  579.  
  580.     See also Alt-Q.
  581.  
  582. Alt-D    DOS shell
  583.  
  584.     Temporarily exit to DOS.  Type "EXIT" to return to comm session.
  585.     RBcomm will swap itself out of memory, leaving only 448 bytes plus
  586.     its copy of the environment in memory (464 bytes when swapping to
  587.     EMS).  When swapping to disk, a 46K-96K swap file will be created
  588.     in the directory you specified with RBCONFIG, and will be deleted
  589.     when you return to the comm session.  File transfers also create
  590.     the temporary swap file.
  591.  
  592. Alt-E    toggle local echo
  593.  
  594.     By default, RBcomm assumes that the remote system will echo any
  595.     characters you need to see.  After pressing Alt-E once, RBcomm will
  596.     display any characters you type without requiring the remote system
  597.     to echo them.  After pressing Alt-E a second time, RBcomm will once
  598.     again assume that the remote system will echo characters.
  599.  
  600.     Note: you may also toggle local echo by pressing 'L' on the Alt-P
  601.     parameters menu.
  602.  
  603. Alt-F    list files
  604.  
  605.     Display a three-up listing of the files matching a given filespec.
  606.     This command uses the pager, whose commands are    listed in a separate
  607.     section below.    Note that while the pager can back up past the
  608.     beginning of its buffer, doing so can be slow for large directories.
  609.     Please be patient if the screen is not updated instantly while backing
  610.     up.
  611.  
  612. Alt-G    Go execute a program
  613.  
  614.     You will be prompted to enter a command.  Everything up to the first
  615.     blank is the program to execute, and the rest of the line is the
  616.     command tail to pass to the program.  If you do not specify an explicit
  617.     path, RBcomm will search your PATH for you; similarly, if you do not
  618.     give an explicit extension, RBcomm will look for both .COM and .EXE
  619.     files.
  620.  
  621.     (to execute a batch file or a COMMAND.COM internal command, you should
  622.     use
  623.          "%VCOMSPEC% /c cmd"
  624.     as the implicit COMMAND.COM invocation from earlier releases has been
  625.     removed)
  626.  
  627. Alt-H    hang up
  628.  
  629.     Terminate the connection.  First drops DTR, and if Carrier Detect is
  630.     still active, sends the modem's hangup string.    The default macro set
  631.     is reloaded from disk (if present) or from the built-in defaults.
  632.     If the CLEANUP "key" has a macro binding, it is executed before
  633.     hanging up; if it includes the LOWER_DTR command, DTR will remain
  634.     dropped.
  635.  
  636. Alt-I    idle
  637.  
  638.     This command allows you to keep a connection alive if you need to step
  639.     away from your computer for a while.  Sends a space followed by a
  640.     backspace every two minutes (configurable with RBCONFIG) until you
  641.     press a key to cancel the command.
  642.  
  643. Alt-J    jump to directory
  644.  
  645.     Pops up a window displaying the current directory.  You may switch to
  646.     a different directory by entering it in place of the displayed
  647.     directory.  Relative paths without a leading slash or backslash will
  648.     change to a subdirectory of the current directory.  If you specify a
  649.     drive letter, that drive will become the current drive as well.
  650.  
  651. Alt-K    unused
  652.  
  653. Alt-L    toggle logging to file
  654.  
  655.     When pressed the first time, you will be asked for the name of a file
  656.     to which all characters received from the remote system will be
  657.     appended (percent signs introduce variable expansions--see the EXEC
  658.     and OPEN_LOG commands below).  When pressed the second time, RBcomm
  659.     will no longer append received characters to that file.     If verbose
  660.     (see Alt-Y) is active, all characters will be appended exactly as
  661.     received, otherwise any command sequences embedded in the received
  662.     data are stripped out.
  663.  
  664. Alt-M    learn macro string
  665.  
  666.     When you press Alt-M, you will be asked to enter a text string of up
  667.     to 79 characters, using the same editing keys used elsewhere.  This
  668.     text string may be replayed with Alt-N.
  669.  
  670. Alt-N    play back macro string
  671.  
  672.     Plays back the last string recorded with Alt-M, sending it to the
  673.     remote system.
  674.  
  675. Alt-O    scrOllback
  676.  
  677.     This command pops up the scrollback pager, allowing you to review
  678.     text which has already scrolled off the screen.     The keystrokes
  679.     which the pager understands are listed in a separate section below.
  680.     In addition, 'M' marks the top of the currently displayed screenfull 
  681.     as the beginning of the region to write when 'W' is pressed.  After
  682.     pressing 'W', you will be prompted for a filename.  The section of
  683.     the scrollback buffer between the marked top (default: beginning of
  684.     buffer) and the bottom of the currently displayed screen is appended
  685.     to the specified file.
  686.  
  687. Alt-P    set parameters
  688.  
  689.     This command pops up a menu which allows you to set the following
  690.     parameters:  COM port, speed, parity, parity stripping, handshake,
  691.     backspace translation, visual bell, and terminal emulation.  You may
  692.     also reset the terminal emulation to its initial state, in case the
  693.     remote system leaves you stranded in a strange condition.  Press Esc,
  694.     Enter, or 'R' to exit this menu.
  695.  
  696.     Note that Alt-P will discard any characters which have been received
  697.     but not yet processed, because it always reinitializes the serial
  698.     port when it pops down.
  699.  
  700. Alt-Q    dial queue of numbers
  701.  
  702.     Repeatedly dials each number you specify until a connection is
  703.     established with one of the numbers.  The numbers are dialed in
  704.     round-robin fashion until a connection is established.    A beep will
  705.     sound to notify you of the connection, and the name of the remote
  706.     system and the modem's connect response will be displayed.
  707.  
  708.     If there were multiple numbers in the previous dialing attempt,
  709.     Alt-Q will immediately continue dialing the numbers which to which
  710.     RBcomm has not yet successfully connected.
  711.  
  712.     You specify the entries to dial by giving the numbers as they appear
  713.     in the dialing directory, separated by commas or blanks.  A number
  714.     may be specified more than once, and will be dialed more than once
  715.     during a round of dialing attempts.  As a shortcut, you may separate
  716.     two numbers by a dash to dial all numbers in the range, inclusive.
  717.  
  718. Alt-R    receive file
  719.  
  720.     Pops up a menu allowing you to select the protocol with which you wish
  721.     to receive a file from a remote system.     Press ESCape if you do not
  722.     wish to receive a file.     Note that Zmodem features automatic download,
  723.     so you do not need to press Alt-R unless you wish to give DSZ
  724.     additional parameters.    You may also add additional autodownloading
  725.     protocols--see the WHEN macro command in the next section.
  726.  
  727.     Not listed on the menu:     ^G, ^Y, and ^Z pop up a parameter prompt,
  728.     then proceed with the download specified by the corresponding
  729.     non-control letter.
  730.  
  731. Alt-S    send file
  732.  
  733.     Pops up a menu allowing you to select the protocol with which you wish
  734.     to send a file to a remote system.  Press ESCape if you do not wish to
  735.     send a file.  After selecting a protocol, you will be asked to enter
  736.     the name of the file to send (Ymodem, Ymodem-G, and Zmodem allow
  737.     wildcards and multiple filespecs).
  738.  
  739.     If you press the control character corresponding to the desired
  740.     protocol, the file(s) will be deleted after a successful transfer.
  741.     For batch transfers, only the files corresponding to the first
  742.     filespec are deleted.
  743.  
  744. Alt-T    type ASCII file to other system
  745.  
  746.     sends an ASCII file to the remote system, pausing after each line
  747.     for the return to be echoed.  The send may be aborted at any time
  748.     by pressing Escape.  The EXPAND_BLANK macro command may be used
  749.     to turn on blank-line expansion (send a single space instead of
  750.     blank lines).  This feature is off by default.
  751.  
  752. Alt-U    load/save user interface as defined in keyboard macro file
  753.  
  754.     Note that keyboard macro files are always stored in the RBcomm
  755.     directory as defined by RBCONFIG.
  756.  
  757.     WORDSTAR.RBM and EMACS.RBM contain the keyboard definitions for using
  758.     WordStar (tm) and Emacs cursor movement commands on the cursor pad
  759.     (i.e. Home goes to the start of the line, etc.)     EMACS.RBM also binds
  760.     all Alt-letter keys to be Esc-letter, making the Alt key into a true
  761.     Emacs meta-key.     You will need to use the Alt-= override to use the
  762.     RBcomm commands while EMACS.RBM is loaded.
  763.  
  764. Alt-V    View file
  765.     (toggle verbose, which used to be on Alt-V, is now on Alt-Y)
  766.  
  767.     Page through a text file.  This uses a simple file lister which
  768.     only understands a few keystrokes; they are listed in a separate
  769.     section below.
  770.  
  771. Alt-W    select Which screen is visible
  772.  
  773.     Displays a menu of the available screens.  Press the indicated
  774.     number to make that screen the visible screen.    If UnixWindows
  775.     is not enabled, the selected screen will also be made the
  776.     active screen (characters received from the serial port are
  777.     displayed on the active screen).  Under UnixWindows, the
  778.     visible and active screens may be different, as the active
  779.     screen is set by commands from the remote system; thus, only
  780.     the visible screen is set by this command.
  781.  
  782. Alt-X    exit
  783.  
  784.     Terminate RBcomm.  If you are still connected to the remote system
  785.     (Carrier Detect asserted), you will be asked whether or not to hang
  786.     up.
  787.  
  788. Alt-Y    toggle verbose
  789.     (previously Alt-V)
  790.  
  791.     Toggles the verbose mode used with Alt-L.  When not logging, the
  792.     control characters which are not used for terminal commands will be
  793.     displayed as ^X when received from the remote system.  When logging to
  794.     a file, terminal command sequences will only be stored in the log file
  795.     if verbose mode is ON.
  796.  
  797. Alt-Z    send file with Zmodem
  798.  
  799.     This command will send the specified file(s) using the Zmodem
  800.     protocol.
  801.  
  802. Alt-1,2,3,4,5,6,7,8,9,0     dial first ten numbers in dialing directory
  803.  
  804. Alt-F1 through Alt-F10     dial 11th through 20th number in dialing directory
  805.  
  806. F1    pop up help screen
  807.     
  808.     Displays the contents of the help file for the current macro file
  809.     (if that file is not found, RBcomm attempts to use RBCOMM.HLP).
  810.     Press an Alt or function key to execute the default binding for the
  811.     key.  Escape exits immediately, and any other key pages through the
  812.     help file (if more than 20 lines long).
  813.  
  814. Alt--    cancel any pending WHEN, DELAYED, or WINDOW commands
  815.  
  816. Alt-=    use default binding of next keystroke
  817.  
  818.     If the keyboard has been redefined, pressing Alt-= will allow you to
  819.     access the built-in default definitions (as listed in this section).
  820.     Press Alt-= and then immediately press the key whose default
  821.     definition you want to use.  As a result, Alt-= is the only keystroke
  822.     which may not be redefined.
  823.  
  824. -----------------------------------------------------------------------------
  825. Line Editor
  826. -----------
  827.  
  828. Whenever you are prompted for a line of input, you may use the following
  829. keys to edit the line:
  830.  
  831.     Esc    abort
  832.     Return    finish input
  833.     Home    move to start of line
  834.     ^A    move to start of line
  835.     End    move to end of line
  836.     Right    move a character right
  837.     ^D    move a character right
  838.     Left    move a character left
  839.     ^S    move a character left
  840.     ^Right    move word right (to next blank)
  841.     ^Left    move word left (to previous blank)
  842.     Del    delete the character under the cursor and shift remainder of
  843.         line left
  844.     Backsp    delete the character to the left of the cursor, and shift the
  845.         remainder of the line left
  846.     Alt-G    delete the word to the right of the cursor
  847.     Alt-H    delete the word to the left of the cursor
  848.     ^End    delete from the cursor to the end of the line
  849.     ^T    transpose the two characters to the left of the cursor
  850.     Alt-D    insert an ASCII DEL (127) character
  851.     Alt-P    insert the contents of the cut buffer
  852.     ^Q    treat the next keystroke as a literal character to insert
  853.  
  854. -----------------------------------------------------------------------------
  855. Pager
  856. -----
  857.  
  858. The pager is used to display directories, files, help screens, and the
  859. scrollback buffer.  It is fairly simple, supporting the following
  860. keystrokes:
  861.  
  862.     Up    move up one line
  863.     Down    move down one line
  864.     PgUp    move up one screenfull
  865.     PgDn    move down one screenfull
  866.     Space    move down one screenfull, exiting if already at end of
  867.         file/directory/buffer.
  868.     Right    (files only) shift the left margin right by eight spaces,
  869.         allowing you to view lines extending past the right
  870.         edge of the screen.  When the left margin is other than
  871.         zero, the indent is shown at the right edge of the status
  872.         line.
  873.     Left    (files only) shift the left margin left by eight spaces if
  874.         it is not already zero.
  875.     Home    restart the pager.  For files and directories, you will
  876.         be put back at the beginning of the file; for the scroll-
  877.         back buffer, you will be placed at the end of the buffer.
  878.     Esc    exit from the pager.
  879.  
  880. The scrollback pager adds the following keys to the above standard keys:
  881.     M    mark the top of the region to write to a file
  882.     W    write the marked region to a file
  883.  
  884. The dialing directory adds the following keys:
  885.     0-9    start entering the number(s) to dial
  886.     M    specify a telephone number to dial manually
  887.     R    recall the last list of numbers to dial
  888.  
  889. -----------------------------------------------------------------------------
  890. Error Messages
  891. --------------
  892.  
  893. file not found
  894.     RBcomm was unable to open the requested file.  This may be due to
  895.     wildcards or a misspelling in the filename, an invalid path,
  896.     a lack of file handles (see FILES= in your DOS manual), or a file
  897.     sharing conflict.
  898.  
  899. invalid macro file
  900.     the macro file you wanted to load is either corrupted or from an
  901.     different version of RBcomm which uses an incompatible format for
  902.     macro files.  Try recompiling the macro file with the same version
  903.     of the compiler as the version of RBcomm you are using.
  904.  
  905. MODEM NOT RESPONDING
  906.     RBcomm did not get an acknowledgement from the modem within four
  907.     seconds of the last command.  If you only get this message on attack
  908.     or list dialing, you need to increase the delay before redialing
  909.     with RBCONFIG (under "dialing parameters")--some modems take longer
  910.     to reset after a hangup command than others.
  911.  
  912. --out of memory--
  913.     There was not enough memory to pop up the requested menu or prompt.
  914.     Increase the heap size with RBCONFIG and try again.
  915.  
  916. STACK FULL
  917.     Your macro was so deeply nested that it ran out of space.  This can
  918.     be caused by an infinite recursion in your macro.  Increase the heap
  919.     size with RBCONFIG (under "Other options") and try again.
  920.  
  921. -----------------------------------------------------------------------------
  922. Warnings
  923. --------
  924.  
  925. Don't try to load a TSR while shelled to DOS.  RBcomm won't be able to swap
  926. itself back in and will have to abort.    Your connection will not be broken,
  927. however.
  928.  
  929. Don't mess with the swap file while shelled.  You'll be sorry....  (RBcomm
  930. is able to detect a missing or truncated swap file on returning, but not
  931. other changes)
  932.  
  933. IMPORTANT:  if you are swapping to a floppy drive, DO NOT UNDER ANY
  934. CIRCUMSTANCES replace that floppy disk while shelled to DOS or running a
  935. file transfer.    You will definitely trash the file allocation tables and
  936. directory of the second disk.  This is a problem with DOS itself (at least
  937. through 3.10, later versions may have corrected it) when faced with a
  938. diskette change while a file is open on the diskette which gets removed.
  939. The swap file is such an open file.
  940.  
  941. -----------------------------------------------------------------------------
  942. Known Bugs and Limitations
  943. --------------------------
  944.  
  945. If you are using a serial port which the BIOS does not recognize, RBcomm
  946. will most likely read garbage parameters from the port at startup, requiring
  947. you to set the parameters by hand with Alt-P or the -P commandline option.
  948.  
  949. The pager has trouble with extremely long lines (>500 columns or so).
  950. When encountering such a line, you may not be able to move up or down by
  951. single lines.  PgUp and PgDn will still work, however.
  952.  
  953. RBcomm requires that the EMS page frame contain at least three pages
  954. in order to use EMS for the scrollback and pager buffers, and at least
  955. one page in order to swap to EMS.  This is important when running under
  956. memory managers such as QEMM-386 which allow page frames smaller than
  957. the standard four pages.
  958.  
  959. -----------------------------------------------------------------------------
  960. Macro Compiler
  961. --------------
  962.  
  963. Syntax:     MACRO srcfile [srcfile ...]
  964. compiles each of the specified source files in turn to a macro file
  965. with the same name and the extension .RBM.  If no extension is
  966. specified for a source file, the default of .MAC is used.
  967.  
  968. Important Note:
  969.     RBcomm v3.4 and later macro files are INCOMPATIBLE with
  970.     earlier versions.  You must recompile all your macro files
  971.     if RBcomm complains about invalid macro files.
  972.  
  973. -------------------
  974. Macro File Commands
  975. -------------------
  976.  
  977. Each command has the following form:
  978.  
  979.     keyname     commandword   [args]
  980.  
  981. where keyname specifies to which key the command is to be bound.  Keynames
  982. (which are not case-sensitive) are:
  983.     F1 through F12 for the function keys
  984.        +F1 through +F12 for the shifted function keys
  985.        ^F1 through ^F12 for the control function keys
  986.        @F1 through @F12 for the alt-function keys
  987.        @A through @Z for the alt-letter keys
  988.        @1 through @0 for the alt-digits
  989.        Gray+, Gray-, Gray*, Gray/ for plus, minus, star, slash keys on keypad
  990.        @Plus and @Minus, @Gr*, @Gr/ for Alt-Gray+, Alt-Gray-, Alt-Gray* and
  991.        Alt-Gray/
  992.        Left, Right, Up, Down for the cursor keys on the numeric pad
  993.        Home, End, PgUp, PgDn, Ins, and Del for the other keypad keys
  994.        KP5 for the '5' key on the number pad (enhanced keyboard)
  995.        ^Home, etc. for the control versions of the numberpad keys
  996.        CP_Home     Home key on gray cursor pad
  997.        CP_Up     Up arrow on gray cursor pad
  998.        CP_Down     Down arrow on gray cursor pad
  999.        CP_Enter     Enter key on cursor pad
  1000.         etc.
  1001.        @Left, @Right, @Up, @Down, @Home, @End, @PgUp, @PgDn, @Ins, @Del for
  1002.        Alt- versions of the cursor pad keys
  1003.        ^Left, ^Right, etc for Ctrl- versions of the cursor pad keys
  1004.        ^Break     for control-break
  1005.        @- @= @[ @\ @] @; @' @, @. @/ @` @* for various other Alt-keys
  1006.  
  1007. There are also some pseudo-keys to which you may assign a macro:
  1008.        "OnLoad" is executed any time the macro file is loaded into memory
  1009.        "AutoDL" is executed whenever the autodownload mechanism is
  1010.         initialized.  See the AUTO_XFER command for details.
  1011.        "Auto" is executed automatically when a connection is established
  1012.        "Reconnect" is executed automatically when reconnecting without
  1013.         hanging up and redialing
  1014.        "CleanUp" is executed when hanging up if carrier detect is active
  1015.        "OnAbort" is executed whenever a macro other than OnAbort aborts and
  1016.         displays the **ABORTED** message, just prior to displaying
  1017.         the message
  1018.        "Alarm" is executed whenever a connection is established with a remote
  1019.         system or when a file transfer (including TYPEing a file)
  1020.         completes.  If not bound, a simple beep is generated.
  1021.  
  1022. And there is a no-operation pseudo-key for use by FORCE_CLEANUP:
  1023.        "Null" does nothing and returns immediately
  1024.  
  1025. Finally, there are two sets of pseudo-keys which can be used to
  1026. override the default settings for file transfers.
  1027.     "#upload_x" will override the command string for the upload
  1028.         protocol with letter 'x' on the upload menu.
  1029.         Format:  #upload_z "upload command string"
  1030.     "#download_x" will override the command string for the download
  1031.         protocol with letter 'x' on the download menu.
  1032.         Format:  #download_z yes|no "download command string"
  1033.         The first parameter indicates whether or not RBcomm
  1034.         should prompt the user for a filename or parameters
  1035.         (which may be inserted in the download command using
  1036.         the %F substitution--see EXEC).
  1037.  
  1038. You may assign macros to control keys by specifying "^x" as the key name,
  1039. where "x" is the control key you want to use.  Similarly, you may assign a
  1040. macro to a regular key by preceding the character representing the key by a
  1041. backslash (i.e. \A for capital 'A', \a for lowercase 'a'). Note that macros
  1042. are never in effect when you are prompted for information by RBcomm; they
  1043. only affect what (if anything) gets sent to the remote system.
  1044.  
  1045. Finally, you may use "#nnn" where nnn is the decimal scancode of the key
  1046. to which you wish to assign the macro (values of 224 through 255 are reserved,
  1047. 167 through 223 are currently unused by any key combinations supported by
  1048. the IBM ROM BIOS).
  1049.  
  1050. Note that the cursor pad keys will execute the binding for the
  1051. corresponding number pad key if not specifically bound (but not vice
  1052. versa).     CP_Enter defaults to the binding for @Enter.
  1053.  
  1054. The commandword is not case-sensitive, but you must include the underscore
  1055. if present and use the entire commandword (abbreviations are not
  1056. supported).
  1057.  
  1058. With the exception of the ANSWERBACK, TEST, TEXT, WAITFOR, and WHEN
  1059. commands, all commands which take a string argument pop up a prompt if the
  1060. string is empty (i.e. "").  Strings may include the following special
  1061. sequences:
  1062.     ^x   specified control character
  1063.     ^?   ASCII DEL (127)
  1064.     \a   ^G (bell)
  1065.     \b   backspace
  1066.     \e   escape
  1067.     \f   form feed
  1068.     \n   line feed
  1069.     \r   carriage return
  1070.     \t   horizontal tab
  1071.     \v   vertical tab
  1072.     \\   backslash
  1073.     \^   carat
  1074.     \0   ASCII NUL (for TEXT command only)
  1075. For character arguments, you may specify either
  1076.     'c'
  1077. where the character c is interpreted as for a string, or you may specify its
  1078. ASCII value.
  1079.  
  1080. Everything from a semicolon (unless it is in a string) to the end of the line
  1081. is considered a comment, as are blank lines.
  1082.  
  1083. If a line starts with #include rather than a key name, the specified file
  1084. will be compiled into the macro file as if it were part of the current text
  1085. file.  Note that the string is processed just like any other strings, so
  1086. that you must double any backslashes (or use forward slashes, instead).
  1087. Format:
  1088.     #INCLUDE  "d:/path/filename"
  1089. an extension of .MAC is assumed if no extension is given, and the drive
  1090. letter and path are optional (default is current drive and directory).
  1091. #INCLUDEs may be nested up to twelve deep.
  1092.  
  1093. If a line starts with #ignore rather than a key name, any subsequent
  1094. occurrences of the keyname following the #ignore will be ignored, just as
  1095. if you had already defined a binding for the key.  This is useful when
  1096. #include'ing a file if you do not want all the bindings in the included
  1097. file.
  1098. Format:
  1099.        #IGNORE    <keyname>
  1100.  
  1101. For readability, you may give names to extended keys with the
  1102.        #DEFKEY <newname> <keynumber>
  1103. command.  For example, "#defkey Proc1 199" will let you refer to
  1104. "Proc1" and "#199" interchangeably.
  1105.  
  1106. ABORT
  1107.     abort the current macro or operation as if the user had pressed Esc.
  1108.  
  1109. ABORT_UNTIL
  1110.     Abort any currently executing UNTIL command after the command(s) it
  1111.     controls complete.  If multiple UNTIL commands are nested, each is
  1112.     aborted as the commands it controls complete, until all pending
  1113.     UNTILs have been aborted.  Useful mainly in conjunction with the
  1114.     DELAYED command to provide a timeout on UNTIL loops.
  1115.  
  1116.     See also DELAYED, UNTIL.
  1117.  
  1118. ALARM
  1119.     Execute the macro bound to the "Alarm" pseudo-key.  If Alarm is not
  1120.     bound, this command is equivalent to BEEP.
  1121.  
  1122.     See also BEEP, SOUND.
  1123.  
  1124. ANSWERBACK "string"
  1125.     sets the answerback message to the specified string.  If the string is
  1126.     empty (i.e. ""), answerback is disabled (making ^E a cursor-positioning
  1127.     command), otherwise, answerback is enabled.
  1128.  
  1129. AT hh:mm:ss
  1130.     execute the following line (or lines if a MULTI) at the specified
  1131.     time.  If the specified time is less than the current time, the
  1132.     command(s) will be executed the next day.  The seconds may be
  1133.     omitted, in which case they default to 0.
  1134.  
  1135.     Note: the command(s) may actually execute later than requested if
  1136.       RBcomm is busy processing incoming characters at the time the
  1137.       command should execute.  The command will execute as soon as RBcomm
  1138.       empties its receive buffer.
  1139.  
  1140.     See also DELAYED.
  1141.  
  1142. AUTO_XFER
  1143.     reenable autodownloads/autouploads if they have been canceled by
  1144.     an ENDWHEN ALL_XFER.  If the AutoDL pseudokey has a binding, it
  1145.     is executed; otherwise, a default routine equivalent to
  1146.         WHEN 0 "**^XB00"
  1147.            RECEIVE 'Z'
  1148.     is executed.  The command ENDWHEN ALL is implemented as an
  1149.     ENDWHEN ALL_XFER followed by AUTO_XFER.
  1150.  
  1151.     Further, the dialer does an ENDWHEN ALL_XFER followed by an
  1152.     AUTO_XFER, so the AutoDL pseudokey will allow autodownloads to
  1153.     be preserved across a dial attempt which does not cause a new
  1154.     macro file to be loaded.
  1155.  
  1156.     The autodownloads are also reenabled with AUTO_XFER when hanging
  1157.     up and immediately after loading a new macro file.
  1158.  
  1159.     Note: Puma autodownload may be enabled with the following lines
  1160.     as part of the AutoDL pseudokey:
  1161.         WHEN 0 "^X^H^XPuma^X^H^X"
  1162.            RECEIVE 'P'
  1163.     Although I have not yet seen MPt (the renamed Puma), I understand
  1164.     that its autodownload string has changed, requiring
  1165.         WHEN 0 "^V^H^VMPt ^V^H^V"
  1166.            RECEIVE 'P'
  1167.  
  1168.     WARNING: do not invoke while autodownload is enabled, as you will wind
  1169.        up invoking a download multiple times for one download request....
  1170.  
  1171.     See also ENDWHEN, WHEN.
  1172.  
  1173. AVATAR ON|OFF
  1174.     Specify whether AVATAR command sequences should be honored by
  1175.     the terminal emulator.
  1176.  
  1177.     See also RBCOMM_CMDS.
  1178.  
  1179. AWAITKEY
  1180.     pause until a key is pressed.  The next function which reads a key
  1181.     will read the key which was pressed.  Returns immediately if there
  1182.     was any typeahead (including RBcomm's key stack).
  1183.  
  1184.     See also KFLUSH.
  1185.  
  1186. BEEP
  1187.     sound the bell.     Useful mainly in conjunction with the MULTI or
  1188.     DELAYED commands (see below).
  1189.  
  1190.     See also ALARM, SOUND.
  1191.  
  1192. BREAK
  1193.     send a break to the remote system
  1194.  
  1195. CALL keyname
  1196.     execute the macro (if any) bound to the specified key and then continue
  1197.     executing the current macro (if inside a MULTI).
  1198.  
  1199.     See also GOTO_KEY, PUSHKEY.
  1200.  
  1201. CANCEL_DELAYED which
  1202.     cancel the specified delayed action.  Currently supported:
  1203.            ALL    cancel all delayed actions
  1204.            LAST   cancel the last executed DELAYED.     If called a second
  1205.               time without an intervening DELAYED, the second call
  1206.               is ignored.
  1207.  
  1208.     See also DELAYED.
  1209.  
  1210. CANCEL_NOTIFY
  1211.     remove the notify window immediately instead of at the end of the
  1212.     configured period of time.
  1213.  
  1214. CHDIR "dir"
  1215.     change the DOS default directory to the specified directory.
  1216.  
  1217. CLOSE_LOG
  1218.     close the current log file.  If logging is off, this command has no
  1219.     effect.
  1220.     See also OPEN_LOG, TOGGLE_LOG.
  1221.  
  1222. CUT num dir "search"
  1223.     search the screen backwards from the current cursor position until
  1224.     the search string (case sensitive) is found, then copy "num"
  1225.     characters in the indicated direction (AFTER or BEFORE) to the cut
  1226.     buffer.     The contents of the cut buffer remain unchanged if the search
  1227.     string is not found (in which case the completion status is set to
  1228.     FAILED for testing by IF or UNTIL).  The cut buffer may be sent to
  1229.     the remote system with the PASTE command, inserted into a line
  1230.     being edited by pressing Alt-P, or inserted with the %C variable
  1231.     expansion.
  1232.  
  1233.     Note that trailing blanks are deleted from the cut buffer.  In
  1234.     addition, the CUT command treats the entire screen (even if a WINDOW
  1235.     command was used to restrict output to a portion of the screen) as a
  1236.     single long line, ignoring all line wrapping for both search and cut.
  1237.  
  1238.     Examples:
  1239.        Screen contains "1234test5678cursor here->" and the cursor is as
  1240.        indicated.  Then
  1241.         CUT 3 BEFORE "test"
  1242.        places "234" into the cut buffer, while
  1243.         CUT 6 AFTER "test"
  1244.        places "5678cu" into the cut buffer.     Further,
  1245.         CUT 7 BEFORE ""
  1246.        will place " here->" into the cut buffer.
  1247.  
  1248.     See also PASTE, TRIM.
  1249.  
  1250. DELAYED time
  1251.     execute the macro on the next line (or lines if it is a MULTI) the
  1252.     given amount of time from now.    You may have up to six delayed
  1253.     commands active at any given time.  The maximum delay time is 18
  1254.     hours; the macro compiler will complain if you attempt to use a
  1255.     greater delay.    Times are specified as
  1256.         seconds
  1257.         minutes:seconds
  1258.     or    hours:minutes:seconds
  1259.  
  1260.     Note: the command may actually execute later than requested if RBcomm
  1261.       is busy processing incoming characters at the time the command should
  1262.       execute.  The command will execute as soon as RBcomm empties its
  1263.       receive buffer.
  1264.  
  1265.     See also CANCEL_DELAYED, WHEN.
  1266.  
  1267. DIAL number redial
  1268.     dial the specified entry (0-39) from the dialing directory, or pop up
  1269.     the dialing directory if 'number' is PROMPT.  'redial' specifies how
  1270.     to dial:
  1271.         ONCE    make only one attempt
  1272.         ATTACK    try repeatedly until connected
  1273.         RECONNECT    make a single attempt if not connected, or set
  1274.             parameters and password without dialing if already
  1275.             connected
  1276.  
  1277.     If the number is PROMPT, the user may enter multiple numbers.  If
  1278.     'redial' is RECONNECT, all but the first number will be ignored.
  1279.     Otherwise, the entire list will be tried either once or until a
  1280.     successful connect.
  1281.  
  1282.     See also LISTDIAL, MDIAL.
  1283.  
  1284. DISPLAY "msg"
  1285.     Display the variable-expanded version (see EXEC for details) of the
  1286.     given string at the current cursor position, and update the cursor
  1287.     position to be at the end of the string.  This is similar to the
  1288.     MESSAGE command, but it always displays at the current position;
  1289.     MESSAGE also does not change the cursor position.  The characters
  1290.     ^A through ^F and ^H in the string invoke special actions.  ^C clears
  1291.     from the current position to the end of the line while ^H backs up
  1292.     one column if not already at the left edge; the other special
  1293.     characters are detailed under "Writing your own Help FIles".
  1294.  
  1295.     See also MESSAGE.
  1296.  
  1297. DVEXEC ON|OFF "DVP-command"
  1298.     Start a program in a separate DESQview window.  The first
  1299.     parameter specifies whether RBcomm should keep its serial port
  1300.     routines active; if OFF, the other program may safely perform
  1301.     serial I/O and RBcomm will wait until it terminates (if ON,
  1302.     RBcomm will continue immediately, but the new program may not
  1303.     take over the serial port interrupt without disrupting RBcomm).
  1304.     The second parameter specifies the full name of the .DVP file
  1305.     to be launched and optionally commandline parameters to
  1306.     override those stored in the .DVP.
  1307.     Example:
  1308.         DVEXEC OFF "C:/DV/OZ-PIF.DVP /X"
  1309.             might call the OZSMALL program to perform a CompuServe
  1310.         B+ file transfer, forcing its commandline to "/X"
  1311.         (meaning exit on completion).
  1312.  
  1313. ECHO ON|OFF
  1314.     ECHO ON forces half-duplex (local echo on) mode, ECHO OFF forces
  1315.     full-duplex (local echo off).
  1316.     (see Alt-E)
  1317.  
  1318.     See also TOGGLE_ECHO.
  1319.  
  1320. ENDWHEN which
  1321.     cancel the specified WHEN command.  Currently supported:
  1322.        ALL           cancel all WHENs except the autodownloads
  1323.        ALL_XFER    cancel all WHENs including the autodownloads
  1324.        LAST           cancel the last executed WHEN.  A second call without
  1325.              an intervening WHEN acts the same as ENDWHEN ALL.
  1326.  
  1327.     Note: ENDWHEN ALL is implemented as an ENDWHEN ALL_XFER followed
  1328.     by an AUTO_XFER.
  1329.  
  1330.     See also AUTO_XFER, WHEN.
  1331.  
  1332. EXEC "command-to-execute"
  1333.     everything up to the first blank in the string specifies the program to
  1334.     execute (the PATH will be searched if no explicit path is given, and
  1335.     both .COM and .EXE will be looked for if there is no explicit
  1336.     extension), the remainder of the string is the command tail to pass to
  1337.     the program.  Note that a following IF command will always consider
  1338.     the EXEC to have succeeded if you use COMMAND.COM to run the program
  1339.     with the construct
  1340.         "%VCOMSPEC% /c cmd"
  1341.     due to a misfeature of COMMAND.COM.
  1342.  
  1343.     If SAVE_SCREEN is ON, RBcomm will prompt for a key, then restore
  1344.     the screen to the state it was in before the EXEC.  No message will
  1345.     be displayed if the program returns an error; however, an error
  1346.     message will still be displayed if there was an error while attempting
  1347.     to load the program.
  1348.  
  1349.     Within the command, a percent sign introduces a variable substitution.
  1350.     The following sequences are supported:
  1351.         %a     hexadecimal I/O base address being used
  1352.         %C     contents of the cut buffer (see CUT and PASTE)
  1353.         %d     current date, in format mm-dd-yy
  1354.         %D     current directory, including drive
  1355.         %F     file(s) to transfer; this substitution is only meaningful
  1356.              for a file transfer parameter string, and has an undefined
  1357.          action elsewhere
  1358.         %i     IRQ number being used (0-15)
  1359.         %I     get input from user.  The following characters up to the next
  1360.          percent sign are used as the prompt and then discarded.
  1361.         %M     current macro file name
  1362.         %N     name of current remote system (from dialing directory)
  1363.         %p     port number (1-4)
  1364.         %P     port parameters, in same format as dialing directory
  1365.          display
  1366.         %s     current serial port speed
  1367.         %t     current time, in format hh:mm:ss
  1368.         %V     get an environment variable.  The following characters up to
  1369.          the next percent sign are used as the name of the variable
  1370.          and then discarded.
  1371.         %w     current switch character
  1372.         %%     a percent sign
  1373.         %/     a forward slash unless the last character of the expansion
  1374.          for the string up to this point is a slash or backslash
  1375.         %\     a backslash unless the last character of the expansion
  1376.          for the string up to this point is a slash or backslash
  1377.  
  1378.     See also EXECN, IF, SHELL.
  1379.  
  1380. EXECN  "command-to-execute"
  1381.     This command is identical to EXEC, except that no error box is
  1382.     displayed in the event of an error.  If SAVE_SCREEN is ON, the
  1383.     screen is restored without pausing for a keystroke.
  1384.  
  1385.     See also EXEC.
  1386.  
  1387. EXIT errorlevel
  1388.     End RBcomm.  Will prompt you whether or not to hang up if you are
  1389.     still connected to another system.  Returns the specified errorlevel
  1390.     to DOS; usually this should be zero, but other values may be used
  1391.     to control batch file execution.
  1392.  
  1393. EXPAND_BLANK ON|OFF
  1394.     Specify whether RBcomm should send a single blank instead of a
  1395.     completely blank line when TYPEing a file (see Alt-T and TYPE).
  1396.     If ON, a blank will be sent to separate two consecutive
  1397.     carriage returns (TYPE converts both CRLF and LF to CR to
  1398.     simulate keyboard input); if OFF, no extra blanks will be
  1399.     generated regardless of the data in the file.
  1400.  
  1401.     See also TYPE.
  1402.  
  1403. FDELETE "filespec"
  1404.     delete the file(s) named by filespec (which may include wildcards).
  1405.     Note that there is no confirmation requested, so use this command
  1406.     with care!!!
  1407.  
  1408.     See also FILES.
  1409.  
  1410. FILES "filespec"
  1411.     display a three-up list of the files matching the filespec.  This
  1412.     uses the file pager described above.
  1413.  
  1414.     See also FDELETE.
  1415.  
  1416. FORCE_CLEANUP keyname
  1417.     execute the following line(s), then execute the macro bound to
  1418.     "keyname" regardless of how the commands are exited (i.e. normally,
  1419.     ABORT, or <Esc>).  FORCE_CLEANUPs may be nested, in which case
  1420.     the innermost one is the only one to execute unless the cleanup
  1421.     code executes an ABORT itself (then execution gets passed to the one
  1422.     enclosing it, etc.).  If no cleanup is needed and the FORCE_CLEANUP
  1423.     is merely being used to prevent a complete abort on Esc, the pseudo-
  1424.     key Null may be used.  Null is guaranteed to perform no action and
  1425.     return immediately.
  1426.  
  1427. GOTO_KEY keyname
  1428.     continue execution with the specified macro (if bound).     Never returns
  1429.     to the current macro.  If the key is not bound (i.e. GOTO_KEY Null),
  1430.     execution resumes at the point from which the current macro was
  1431.     CALLed, effectively producing a return from a nested macro.
  1432.  
  1433.     See also CALL, PUSHKEY.
  1434.  
  1435. HANGUP
  1436.     hang up.  Executes macro bound to "CleanUp" before actually hanging
  1437.     up if carrier detect is active.     After hanging up, the default macro
  1438.     file is reloaded (thus cancelling any remaining WHENs and DELAYEDs).
  1439.  
  1440.     See also HANGUP_ONLY.
  1441.  
  1442. HANGUP_ONLY
  1443.     hang up, but do not execute the "CleanUp" macro or reload macro files.
  1444.  
  1445.     See also HANGUP.
  1446.  
  1447. HELP
  1448.     pop up the help screen.     If you currently have the macro file FOO
  1449.     loaded, RBcomm first attempts to read the file FOO.HLP in the RBcomm
  1450.     directory.  If it is unable to do so, it then attempts to read
  1451.     RBCOMM.HLP.
  1452.  
  1453.     While viewing the help screen(s), you may enter an Alt-key command.
  1454.     This will immediately exit the help system and execute the command
  1455.     right away.  If you press Alt=, that fact will be remembered, and
  1456.     the Alt= will be used to quote the next Alt-key command you press
  1457.     while in the help system.
  1458.  
  1459. IDLE
  1460.     go into idle mode, sending a blank followed by a backspace every 2
  1461.     minutes.  Press Esc to end idle mode.
  1462.  
  1463.     Both the interval and the sequence sent by idle mode may be configured
  1464.     with RBCONFIG.
  1465.  
  1466. IF    SUCCESS|FAILED|CONNECTED|OFFLINE|DV|NOT DV
  1467.     IF SUCCESS and IF FAILED conditionally execute a command based on the
  1468.     completion status of an immediately preceding EXEC, SHELL, SEND,
  1469.     SENDFILE, RECEIVE, RECEIVEFILE, or WAITFOR.  The following line (or
  1470.     lines if a MULTI) is executed only if that prior command was
  1471.     successful in the case of IF SUCCESS, or if it failed in the case of
  1472.     IF FAILED.
  1473.  
  1474.     IF CONNECTED executes the following command if carrier detect is
  1475.     asserted, while IF OFFLINE executes the following command if
  1476.     carrier detect is deasserted.
  1477.  
  1478.     IF DV executes the following command if RBcomm has detected that it
  1479.     is running under DESQview, while IF NOT DV executes the following
  1480.     command only if RBcomm is not running under DESQview.
  1481.  
  1482.     For example, if you want to execute a program only after failing to
  1483.     see a particular string, you would use
  1484.  
  1485.         MULTI
  1486.         WAITFOR 10 "don't run program"
  1487.         IF FAILED
  1488.             EXEC "someprog args"
  1489.         END
  1490.  
  1491.     See also ABORT_UNTIL, EXEC, SHELL, SEND, RECEIVE, WAITFOR, UNTIL.
  1492.  
  1493. KFLUSH
  1494.     empty the keyboard buffer (including RBcomm's key stack).
  1495.  
  1496.     See also AWAITKEY, TFLUSH.
  1497.  
  1498. LEARN
  1499.     start learning a macro string.    The recorded string may be sent to
  1500.     the remote system with RECALL.
  1501.  
  1502.     See also LOAD_MACRO, RECALL.
  1503.  
  1504. LISTDIAL "numbers"
  1505.     dial the specified numbers from the dialing directory repeatedly until
  1506.     a connection is established with one of the numbers.  If the empty
  1507.     string is specified, the dialing directory is popped up and the
  1508.     previous list of numbers (less the system to which RBcomm
  1509.     established a connection) is recalled.
  1510.  
  1511.     Each of the numbers in the list must be separated from the previous
  1512.     number by one or more spaces or commas.     For example,  "1,5 7,2 4"
  1513.     would attempt to dial entry 1, then entry 5, then 7, then 2, and
  1514.     finally entry 4 before repeating.  Any numbers in the list which are
  1515.     higher than the highest-numbered entry in the current dialing
  1516.     directory are silently skipped.
  1517.  
  1518.     See also DIAL, MDIAL.
  1519.  
  1520. LOAD_MACRO "file"
  1521.     load the specified macro file from the RBcomm directory.  If an empty
  1522.     filename is given, the user will be prompted for a name, which
  1523.     defaults to the name of the currently loaded macro file.  The current
  1524.     macro (if any) and any that it had interrupted are aborted.  However,
  1525.     if the interruption occurred during a command of extended duration
  1526.     such as a WAITFOR, that command will complete normally before the
  1527.     macro is aborted.
  1528.  
  1529.     See also LEARN, RECALL.
  1530.  
  1531. LOG "filename" "message"
  1532.     append the specified message to the named file.     Both the filename
  1533.     and the message may contain variable expansions as described under
  1534.     EXEC.  If the filename is (or expands to) the empty string "", the
  1535.     expanded message is appended to the current log file (if any).
  1536.  
  1537.     See also OPEN_LOG.
  1538.  
  1539. LOWER_DTR
  1540.     requests that DTR remain dropped after the next HANGUP or HANGUP_ONLY
  1541.     command.  The best place to put this command is in your CleanUp macro.
  1542.  
  1543. LTRIM CUTBUFFER "trimchars"
  1544.     remove from the left (beginning) of the cut buffer (see CUT) the
  1545.     longest sequence of characters consisting entirely of characters in
  1546.     "trimchars".  A future version of RBcomm supporting string variables
  1547.     will permit trimming more than just the cut buffer.
  1548.  
  1549.     Example: if a previous CUT command has placed "12  A22B  34" into the
  1550.       cut buffer, the command
  1551.           LTRIM CUTBUFFER " 1234"
  1552.       will result in "A22B  34" becoming the contents of the cut buffer,
  1553.       available for the next PASTE command or @P in the input editor.
  1554.  
  1555.     See also CUT, RTRIM, TRIM.
  1556.  
  1557. MDIAL "number" ONCE|ATTACK
  1558.     dial the specified phone number as if it had been entered as the
  1559.     manual number for the dialing directory display.
  1560.  
  1561.     See also DIAL, LISTDIAL.
  1562.  
  1563. MESSAGE row col msg
  1564.     Display the result of expanding any variables in the specified message
  1565.     (see EXEC for details) starting at the given row and column on the
  1566.     screen.     If either row or column is 255, use the current row or
  1567.     column.     Does not change the current cursor position, unlike the
  1568.     DISPLAY command.  As with DISPLAY, the characters ^A through ^F and ^H
  1569.     specify special actions.
  1570.  
  1571.     See also DISPLAY.
  1572.  
  1573. MESSAGEBOX msg
  1574.     if running under TopView or DESQview, a window with the given message
  1575.     will pop up for three seconds.    This command is ignored otherwise.
  1576.  
  1577.     The message has any variables expanded, and the first 40 characters
  1578.     are displayed in the pop up window.  See EXEC for the details of
  1579.     the variable expansion.
  1580.  
  1581.     See also NOTIFY, CANCEL_NOTIFY.
  1582.  
  1583. MULTI
  1584.     the following lines, up to but not including a line starting with END,
  1585.     are assigned to the specified key.  The macros assigned to the key
  1586.     may not total more than 253 bytes, and the macro compiler will
  1587.     complain if they do.
  1588.  
  1589.     The format of the following lines is the same as for a regular macro,
  1590.     except that you do not specify a keyname.  For example, to make
  1591.     shift-F2 switch terminal emulation to VT52, use
  1592.  
  1593.     +F2    MULTI
  1594.         PUSHKEY 13 0
  1595.         PUSHKEY 'V' 0
  1596.         PARAM_MENU
  1597.         END
  1598.  
  1599.     You may also use { and } on separate lines as synonyms for MULTI
  1600.     and END.  The braces are preferred, as MULTI/END will be phased out
  1601.     in future versions.
  1602.  
  1603. MUSIC ON|OFF
  1604.     specify whether ANSI music should be enabled while using the
  1605.     ANSI BBS terminal emulation.  This switch is necessary because
  1606.     the command to play music conflicts with a standard ANSI
  1607.     control sequence (Esc [ M).
  1608.  
  1609.     See also PLAY, SOUND.
  1610.  
  1611. NOTIFY    msg
  1612.     if running under TopView or DESQview, and RBcomm determines that it is
  1613.     in the background, a window with the given message will pop up for
  1614.     three seconds.    This command is ignored otherwise.
  1615.  
  1616.     The message has any variables expanded, and the first 40 characters
  1617.     are displayed in the pop up window.  See EXEC for the details of
  1618.     the variable expansion.
  1619.  
  1620.     See also CANCEL_NOTIFY, MESSAGEBOX.
  1621.  
  1622. OPEN_LOG  "file"
  1623.     if logging is on, the current log file will be closed.    Then, the
  1624.     specified log file will be opened (if no name is given, a prompt is
  1625.     popped up).  The same variable expansions which are valid for
  1626.     the EXEC command are applied to the filename which is given (or
  1627.     entered by the user).
  1628.  
  1629.     For example, to allow the environment variable RBLOG to specify the
  1630.     base name of the log file, use
  1631.         OPEN_LOG "%VRBLOG%.LOG"
  1632.  
  1633.     See also EXEC, CLOSE_LOG, TOGGLE_LOG, RECEIVE.
  1634.  
  1635. PACECHAR 'c'
  1636.     set the pace character for the TYPE command to 'c'.  RBcomm waits
  1637.     up to three seconds for the pace character when TYPEing a file to
  1638.     the remote system.  RBcomm will not wait if the pace character is
  1639.     ASCII 0 (^@).
  1640.  
  1641.     See also TYPE.
  1642.  
  1643. PARAM_MENU
  1644.     pop up the "Set Parameters" menu
  1645.  
  1646. PASSWORD
  1647.     send the password defined in the dialing directory.  Does not send
  1648.     a carriage return or any other terminating sequence.
  1649.  
  1650.     See also TEXT, TYPE.
  1651.  
  1652. PASTE
  1653.     send the contents of the cut buffer to the remote system.
  1654.  
  1655.     See also CUT.
  1656.  
  1657. PAUSE num-ticks
  1658.     halt execution for num-ticks/18 seconds.  Useful mainly in conjunction
  1659.     with the MULTI command (see above).
  1660.  
  1661. PLAY "play-string"
  1662.     play the notes specified by the string.     The string may contain
  1663.     the following directives:
  1664.         An
  1665.         Bn
  1666.         Cn
  1667.         Dn
  1668.         En
  1669.         Fn
  1670.         Gn    play the given note, 'n' specifies duration as
  1671.             a fraction of a whole note, defaults to that
  1672.             given by the last L command.  A '#' or '+'
  1673.             between the letter and 'n' produces a sharp
  1674.             note, while a '-' produces a flat note.
  1675.         Ln    specify the default length of notes as 1/n of a
  1676.             whole note
  1677.         Mx    specify music type, x=L, N, or S
  1678.             L)egato: note uses entire period
  1679.             N)ormal: note uses 7/8 of its time period
  1680.             S)taccato: note uses 3/4 of its time period
  1681.         Nn    play note number 'n', from 1 to 95
  1682.         On    specify octave number, 0 to 9.    O3 starts at
  1683.             middle C
  1684.         Pn    rest for the specified period (1/n of a whole
  1685.             note).    If 'n' is not present, use the length
  1686.             given by the last L command
  1687.         Tn    specify tempo, 32 to 255
  1688.         .    following A-G, N, or P, increases the note's
  1689.             length by 1/2.
  1690.  
  1691.     See also BEEP, SOUND.
  1692.  
  1693. PUSHKEY key scan
  1694. or
  1695. PUSHKEY keyname
  1696.     put the specified key/scancode pair onto RBcomm's internal keyboard
  1697.     stack, where the last pushed pair will be the next keystroke read
  1698.     by RBcomm.  The stack is currently eight keystrokes in size, and any
  1699.     PUSHKEY executed while the stack is full will simply be ignored.
  1700.     "keyname" may be the name of any keystroke recognized by the macro
  1701.     compiler.  <scan> is 0 for regular ASCII characters, and 1 for
  1702.     extended ASCII codes (i.e. function keys).
  1703.  
  1704.     Useful mainly in conjunction with the MULTI command (see above).
  1705.  
  1706. RBCOMM_CMDS ON|OFF
  1707.     Specify whether the terminal emulator should honor RBcomm
  1708.     private commands.
  1709.  
  1710.     See also AVATAR.
  1711.  
  1712. RECALL
  1713.     send the last string recorded with LEARN to the remote system.
  1714.  
  1715.     See also LEARN.
  1716.  
  1717. RECEIVE 'type'
  1718.     start receiving a file with the specified protocol
  1719.           0       prompt for protocol
  1720.           'A'  ASCII (capture to file--equivalent to OPEN_LOG "")
  1721.           'X'  Xmodem with parameters
  1722.           'K'  Xmodem-K with parameters
  1723.           'Y'  Ymodem
  1724.           '^Y' Ymodem with parameters
  1725.           'G'  Ymodem-G
  1726.           '^G' Ymodem-G with parameters
  1727.           'Z'  Zmodem
  1728.           '^Z' Zmodem with parameters
  1729.  
  1730.     See also IF, OPEN_LOG, SEND, TYPE.
  1731.  
  1732. RECEIVEFILE 'type' "parameters"
  1733.     start receiving using the specified protocol (which may be any of the
  1734.     ones listed for RECEIVE except 0 or 'A'), passing the specified
  1735.     parameters to the file transfer module.     Unlike RECEIVE, this command
  1736.     will not pop up any messages unless it is unable to load the file
  1737.     transfer module; in case of an error, the completion status is set
  1738.     to FAILED.
  1739.  
  1740.     See also RECEIVE, SENDFILE.
  1741.  
  1742. REPEAT times
  1743.     repeat the command on the next line (or lines if a MULTI) the specified
  1744.     number of times.
  1745.  
  1746. RFLUSH
  1747.     clear any characters which may still be in the serial port receive
  1748.     buffer.
  1749.  
  1750.     See also KFLUSH, TFLUSH.
  1751.  
  1752. RTRIM CUTBUFFER "trimchars"
  1753.     remove from the right (end) of the cut buffer (see CUT) the longest
  1754.     sequence of characters consisting entirely of characters in
  1755.     "trimchars".  A future version of RBcomm supporting string variables
  1756.     will permit trimming more than just the cut buffer.
  1757.  
  1758.     Example: if a previous CUT command has placed "12  A22B  34" into the
  1759.       cut buffer, the command
  1760.           RTRIM CUTBUFFER " 1234"
  1761.       will result in "12  A22B" becoming the contents of the cut buffer,
  1762.       available for the next PASTE command or @P in the input editor.
  1763.  
  1764.     See also CUT, LTRIM, TRIM.
  1765.  
  1766. SAVE_MACRO "file"
  1767.     no longer supported.
  1768.  
  1769. SAVE_SCREEN ON|OFF
  1770.     determine whether or not to save the current screen while executing
  1771.     external programs (other than file transfer).  The state of this
  1772.     flag slightly modifies the behavior of EXEC, EXECN, and SHELL.
  1773.  
  1774.     See also EXEC, EXECN, SHELL.
  1775.  
  1776. SCROLLBACK
  1777.     bring up the scrollback pager.    In addition to the standard keystrokes
  1778.     understood by the pager, 'M' marks the top of the currently displayed
  1779.     screenfull as the beginning of the region to write when 'W' is pressed.
  1780.     After pressing 'W', you will be prompted for a filename.  The section
  1781.     of the scrollback buffer between the marked top (default: beginning of
  1782.     buffer) and the bottom of the currently displayed screen is appended
  1783.     to the specified file.
  1784.  
  1785. SELECT_SCREEN num
  1786.     select a new screen to be the visible and active screen.  If "num" is
  1787.     PROMPT, displays a menu of the available screens.
  1788.  
  1789. SEND 'type'
  1790.     prepare to send a file with the specified protocol
  1791.           0       prompt for protocol
  1792.           'A'  ASCII
  1793.           'X'  Xmodem
  1794.           'K'  Xmodem-K
  1795.           'Y'  Ymodem
  1796.           'G'  Ymodem-G
  1797.           'Z'  Zmodem
  1798.     control character versions of any of the above ('^X', '^Y', etc) will
  1799.     delete the file(s) corresponding to the first filespec after sending.
  1800.  
  1801.     See also IF, SENDFILE, RECEIVE, TYPE.
  1802.  
  1803. SENDFILE 'type' "file"
  1804.     send the specified file with the given protocol, which may be any of
  1805.     the ones listed for SEND except 0 or 'A'.  Unlike SEND, this command
  1806.     will not pop up any messages unless it is unable to load the file
  1807.     transfer module; in case of an error, the completion status is set
  1808.     to FAILED.
  1809.  
  1810.     See also RECEIVEFILE, SEND.
  1811.  
  1812. SHELL
  1813.     shell to DOS.  If SAVE_SCREEN is ON, the original screen will be
  1814.     restored when you exit from the subshell.
  1815.  
  1816.     See also EXEC, IF.
  1817.  
  1818. SOUND freq dur
  1819.     Generate a tone with a frequency of <freq> Hertz for <dur> clock
  1820.     ticks (max 255).  If the frequency is 0, a musical pause of the
  1821.     specified duration is created.    If both frequency and duration are
  1822.     zero, all queued tones are discarded (applies only to DESQview at
  1823.     this time).
  1824.  
  1825.     See also BEEP, PLAY.
  1826.  
  1827. TEST EXISTS "filespec"
  1828.     determine whether any files matching the filespec exist.  Sets the
  1829.     status to SUCCESS if at least one exists, FAILED if none.  The status
  1830.     may be checked with IF or UNTIL commands.
  1831.  
  1832.     See also TEST WHEN, IF.
  1833.  
  1834. TEST WHEN "str"
  1835.     determine whether a WHEN with the specified search string is currently
  1836.     active.     Sets the status to SUCCESS if at least one exists, FAILED if
  1837.     there are no WHENs with the specified string.  The status may be
  1838.     checked with IF or UNTIL commands.
  1839.  
  1840.     See also IF, WHEN, TEST EXISTS.
  1841.  
  1842. TEXT "msg"
  1843.     send the specified characters out the comm port.  "msg" is limited to
  1844.     253 characters.
  1845.  
  1846. TFLUSH
  1847.     discard any characters queued for transmission to the remote system 
  1848.     which have not yet been sent.
  1849.  
  1850.     See also KFLUSH, RFLUSH.
  1851.     
  1852. TOGGLE_ECHO
  1853.     toggle the state of local echoing
  1854.  
  1855.     See also ECHO.
  1856.  
  1857. TOGGLE_LOG
  1858.     if logging is currently on, turns off logging received data to file
  1859.     if logging is off, pops up a prompt for the name of the capture file
  1860.  
  1861.     See also OPEN_LOG, CLOSE_LOG.
  1862.  
  1863. TOGGLE_VERBOSE
  1864.     toggle the state of verbose mode (see Alt-Y)
  1865.  
  1866.     See also VERBOSE.
  1867.  
  1868. TRANSLATE_BS ON|OFF
  1869.     TRANSLATE_BS ON turns on backspace/delete swapping, TRANSLATE_BS OFF
  1870.     turns it off.
  1871.  
  1872. TRIM CUTBUFFER "trimchars"
  1873.     remove from both beginning and end of the cut buffer (see CUT) the
  1874.     longest sequence of characters consisting entirely of characters in
  1875.     "trimchars".  A future version of RBcomm supporting string variables
  1876.     will permit trimming more than just the cut buffer.
  1877.  
  1878.     Example: if a previous CUT command has placed "12  A22B  34" into the
  1879.       cut buffer, the command
  1880.           TRIM CUTBUFFER " 1234"
  1881.       will result in "A22B" becoming the contents of the cut buffer,
  1882.       available for the next PASTE command or @P in the input editor.
  1883.  
  1884.     See also CUT, LTRIM, RTRIM.
  1885.  
  1886. TYPE "file"
  1887.     send the specified file to the remote system as a stream of ASCII
  1888.     characters.  Pauses at the end of each line and waits for the pace
  1889.     character to be echoed (will continue after three seconds even if
  1890.     the echo is not seen).    Equivalent to
  1891.         SEND 'A'
  1892.     if no filename is given.
  1893.  
  1894.     See also EXPAND_BLANK, PACECHAR, SEND.
  1895.  
  1896. UI_MENU
  1897.     No longer supported.  Use LOAD_MACRO "" instead.
  1898.  
  1899.     See also LEARN, LOAD_MACRO.
  1900.  
  1901. UNTIL SUCCESS|FAILED|CONNECTED|OFFLINE
  1902.     repeatedly executes the following line (or lines if a MULTI) until
  1903.     the status of the last action is either success for UNTIL SUCCESS
  1904.     or failure for UNTIL FAILED.   UNTIL CONNECTED repeatedly executes
  1905.     the following command until carrier detect becomes active, while
  1906.     UNTIL OFFLINE repeats until carrier detect drops.
  1907.  
  1908.     See also ABORT_UNTIL, IF.
  1909.  
  1910. VERBOSE ON|OFF
  1911.     VERBOSE ON turns on verbose mode, VERBOSE OFF turns off verbose mode.
  1912.     (see Alt-Y)
  1913.  
  1914.     See also TOGGLE_VERBOSE.
  1915.  
  1916. VIEW "filename"
  1917.     display the specified file one screenfull at a time.  Pops up a prompt
  1918.     if the null filename is given.
  1919.  
  1920.     Pressing the space bar displays the next screen, Escape exits the
  1921.     file view.
  1922.  
  1923. WAITFOR timeout "wait-string"
  1924.     wait up to timeout seconds for the specified string of characters to
  1925.     arrive over the comm port.  Useful mainly in conjunction with the
  1926.     MULTI command (see below).
  1927.  
  1928.     You may test whether the string was actually received by following
  1929.     the WAITFOR with IF SUCCESS or IF FAILED (unlike versions prior to
  1930.     3.11, a failed WAITFOR does not abort the MULTI it is a part of).
  1931.  
  1932.     See also IF.
  1933.  
  1934. WHEN    iterations "when-string"
  1935.     execute the command on the following line (or lines if it is a MULTI)
  1936.     whenever the "when-string" is encountered in the data stream coming
  1937.     from the remote system.     After the string has been encountered
  1938.     "iterations" times, the WHEN is automatically canceled (if iterations
  1939.     is zero, the WHEN must be explicitly canceled with ENDWHEN).
  1940.     You may have up to six WHENs active at any time (eight if you cancel
  1941.     the autodownload [see ENDWHEN above]).    All WHENs are canceled on
  1942.     hanging up or dialing a number, and autodownload is re-enabled.
  1943.  
  1944.     WHENs are tested in the order in which they were executed, so multiple
  1945.     WHENs with the same when-string will trigger in the order in which
  1946.     they were asserted.
  1947.  
  1948.     This can be an extremely powerful command.  For example, you can
  1949.     implement another autodownloading (or uploading!) protocol simply by
  1950.     adding
  1951.         WHEN 0 "start-string"
  1952.            EXEC "xfer-program parms"
  1953.     to the AUTO or OnLoad macro.  On CompuServe, you can make Ymodem
  1954.     autodownloading by adding
  1955.         WHEN 0 "initiate YMODEM receive"
  1956.            RECEIVE 'Y'
  1957.     to the OnLoad macro.
  1958.  
  1959.     The built-in Zmodem autodownload corresponds to
  1960.         WHEN 0 "**^XB00"
  1961.            RECEIVE 'Z'
  1962.     while Zmodem auto-upload can be added with
  1963.         WHEN 0 "**^XB01"
  1964.            SEND 'Z'
  1965.  
  1966.     The standard Puma autodownload is equivalent to the lines
  1967.         WHEN 0 "^X^H^XPuma^X^H^X"
  1968.            RECEIVE 'P'
  1969.     [thanks to Matthew Thomas for publishing his autodownload string!].
  1970.  
  1971.     See also DELAYED, ENDWHEN.
  1972.  
  1973. WINDOW    row col width height
  1974.     limit the terminal emulator to a portion of the full screen.
  1975.  
  1976.     WINDOW 0 0 255 255 will restore use of the full screen regardless of
  1977.     the screen size.
  1978.  
  1979. -----------
  1980. Time Limits
  1981. -----------
  1982.  
  1983. The maximal time intervals which may be specified for various commands are:
  1984.     255 ticks (~14 seconds)        PAUSE, SOUND
  1985.     255 seconds (4.25 minutes)    WAITFOR
  1986.     18 hours (64800 seconds)    DELAYED
  1987.  
  1988. -----------------------------------------------------------------------------
  1989. Ready-Made Macro Files
  1990. ----------------------
  1991.  
  1992. The RBcomm distribution includes the following macro files:
  1993.  
  1994. AVATAR.MAC    for use with a BBS that supports AVATAR emulation in
  1995.         its full-screen editor.  This file implements the so-
  1996.         called "DOORWAY mode", passing through all keystrokes.
  1997.         To access RBcomm's commands, you must use the Alt=
  1998.         escape key before the RBcomm command key.
  1999.  
  2000. AVATOPUS.MAC    for use with Opus 1.10 or later BBSs, or compatibles
  2001.         such as Maximus.  Implements DOORWAY mode as AVATAR.MAC
  2002.         does, but also adds logon scripts for the OPUS CBCS
  2003.  
  2004. BAREOPUS.MAC
  2005.  
  2006. CPOINT.MAC    logon to Central Point Software's BBS
  2007.  
  2008. DDJ.MAC        logon to M&T Publishing's BBS to access the DDJ listings
  2009.  
  2010. EMACS.MAC    for use with Unix systems.  Turns your Alt key into a
  2011.         Meta key.
  2012.  
  2013. EXAMPLES.MAC    various sample macros illustrating different features.
  2014.  
  2015. LK201.MAC    emulate an LK201 keyboard
  2016.  
  2017. OPUS.MAC
  2018.  
  2019. QDECK.MAC    logon to Quarterdeck's BBS
  2020.  
  2021. RBCOMM.MAC    default macros
  2022.  
  2023. VT100.MAC    emulate a VT100 keyboard
  2024.  
  2025. VT3270.MAC    emulate a VT100/IBM 3270 keyboard
  2026.  
  2027. VT52.MAC    emulate a VT52 keyboard
  2028.  
  2029. WORDSTAR.MAC    send WordStar motion commands using arrow keys
  2030.  
  2031. -----------------------------------------------------------------------------
  2032. Writing your own Help Files
  2033. ---------------------------
  2034.  
  2035. Help files are plain ASCII files with the exception that several control
  2036. characters are used to change character attributes within a line (each
  2037. line starts with the default attributes).
  2038.  
  2039.     ^A  (A)lternate foreground and background colors, thus turning
  2040.         reverse video on or off
  2041.     ^B  toggle the (B)old bit
  2042.     ^D  reset to (D)efault attributes
  2043.     ^E  switch to underlined color as defined by RBCONFIG
  2044.     ^F  toggle (F)lashing (blink bit)
  2045.  
  2046. -----------------------------------------------------------------------------
  2047. Terminal Emulation
  2048. ------------------
  2049.  
  2050. RBcomm supports three terminal emulations.  ANSI provides standard ANSI
  2051. escape sequences plus most VT102 and many VT200 escape sequences.  BBS is
  2052. identical to ANSI except that clearing the screen with Esc-[-J or Esc-[-2-J
  2053. also homes the cursor, character set switching is disabled, and two of
  2054. RBcomm's private commands are replaced by the AVATAR level 0 command set.
  2055. Finally, VT52 replaces many of the Esc-letter sequences in ANSI with the
  2056. actions a VT52 or H19 would perform.  In addition, in all of these modes,
  2057. RBcomm has its own, much more compact command set (which may optionally
  2058. be disabled to permit display of the corresponding control characters).
  2059.  
  2060. ------------------
  2061. Control Characters
  2062. ------------------
  2063.  
  2064. Note: Control characters marked with (RBcomm) may be displayed if the
  2065.     terminal emulation is set to "BBS" and RBcomm private commands are
  2066.     disabled. 
  2067.  
  2068. ^A    UnixWindows command character (see below for sequences)
  2069. ^B    move cursor right one position (RBcomm)
  2070. ^C    move cursor down a line (RBcomm)
  2071. ^D    move cursor left one position, does not wrap to previous line (RBcomm)
  2072. ^E    send the answerback string to the remote system (ANSI and VT52 only)
  2073. ^F    special sequences (see below) (RBcomm)
  2074. ^G    sound bell, or flash screen if visible bell enabled
  2075. ^H    move cursor left one position, wraps to previous line
  2076. ^I    move to next tab stop
  2077. ^J    move cursor down a line, scrolling screen when at bottom
  2078. ^K    insert a blank line
  2079. ^L    clear screen and home cursor
  2080. ^M    move cursor to start of line
  2081. ^N    "shift out"--switch to G1 character set (VT100)
  2082. ^O    "shift in"--switch to G0 character set (VT100)
  2083. ^P    clear rest of line (Note: if AVATAR is in cooked mode, ^P is the
  2084.     "cook" character, causing the next character to have its high three
  2085.     bits cleared; two consecutive ^Ps will be needed to give the
  2086.     clear-line command) (RBcomm)
  2087. ^R    change to reverse video (RBcomm)
  2088. ^T    change character attribute to underlined (RBcomm)
  2089. ^U    clear underlined attribute and reverse video (RBcomm)
  2090. ^V    start of an AVATAR command (see below)
  2091. ^W    delete character at cursor position, rest of line shifts left (RBcomm)
  2092. ^X    insert a blank at the cursor's position, push rest of line
  2093.     right (RBcomm)
  2094. ^Y    repeat the following character the number of times specified by
  2095.           the second character after the ^Y
  2096. ^Z    delete line cursor is on (RBcomm)
  2097. ^[    escape sequence (see below)
  2098. ^\    turn on insert mode (RBcomm)
  2099. ^]    turn off insert mode (RBcomm)
  2100. ^^    move cursor up a line (RBcomm)
  2101. ^_    the following two characters (less 32) specify the new cursor
  2102.     column and row.     i.e. ^_-blank-blank homes the cursor. (RBcomm)
  2103.  
  2104.  
  2105. ----------------
  2106. Escape Sequences
  2107. ----------------
  2108.  
  2109. Esc-blank-F  turn off eight-bit control characters
  2110. Esc-blank-G  turn on eight-bit control characters.  When eight-bit control
  2111.          characters are enabled, many of the characters from 80h through
  2112.          9Fh are equivalent to Esc-<char-40h>.
  2113. Esc-(    (VT100) next character ('0', '1', '2', 'A', or 'B') sets G0 character
  2114.     set
  2115. Esc-)    (VT100) next character ('0', '1', '2', 'A', or 'B') sets G1 character
  2116.     set
  2117. Esc-#    (VT100) next character sets character size
  2118.     only '8' implemented -- fill screen with 'E's for alignment display
  2119. Esc-7    save cursor
  2120. Esc-8    restore cursor
  2121. Esc-<    set terminal emulation to ANSI
  2122. Esc-=    set keypad application mode (if allowed to change NumLock by RBCONFIG)
  2123. Esc->    set keypad numeric mode (if allowed to change NumLock by RBCONFIG)
  2124. Esc-@    turn on insert mode
  2125. Esc-A    move cursor up
  2126. Esc-B    move cursor down
  2127. Esc-C    move cursor right
  2128. Esc-D    (ANSI) "index"--move cursor down, scroll if at bottom
  2129.     (VT52) move cursor left
  2130. Esc-E    (ANSI) move to start of next line, scroll if at bottom
  2131.     (VT52) clear screen
  2132. Esc-F    (ANSI) not implemented
  2133.     (VT52) select graphics character set
  2134. Esc-G    (ANSI) not implemented
  2135.     (VT52) select text character set
  2136. Esc-H    (ANSI) set horizontal tab at current position
  2137.     (VT52) home cursor
  2138. Esc-I    (ANSI) horizontal tab
  2139.     (VT52) reverse linefeed, scrolls down if already on top line
  2140. Esc-J    (ANSI) not implemented
  2141.     (VT52) clear to end of screen
  2142. Esc-K    (ANSI) not implemented
  2143.     (VT52) clear to end of line
  2144. Esc-L    (ANSI) not implemented
  2145.     (VT52) insert a new line at cursor
  2146. Esc-M    (ANSI) "reverse index"--cursor up, reverse scroll if at top
  2147.     (VT52) delete cursor line
  2148. Esc-N    (ANSI) not implemented
  2149.     (VT52) delete char at cursor, rest of line shifts left
  2150. Esc-O    (ANSI) not implemented
  2151.     (VT52) turn off insert mode
  2152. Esc-Y    move cursor, next two characters are row + 32, column + 32
  2153. Esc-Z    request identification
  2154.     (ANSI) RBcomm returns the string "rbcommN.NNx" where N.NN is the
  2155.            version number and "x" is a single byte identifying implemented
  2156.            capabilities
  2157.            bit 0: multiple screens available if set
  2158.            bit 1: file transfer implemented (always set)
  2159.            bit 6: always set (makes character printable)
  2160.            bit 7: always clear
  2161.            remaining bits reserved (zero)
  2162.     (VT52) RBcomm returns the string Esc-/-Z, indicating a VT100 emulating
  2163.            a VT52.
  2164. Esc-[    ANSI sequence, see below
  2165. Esc-]    Operating System Command.  The following characters through an Esc-\
  2166.     sequence (maximum 80 characters) are skipped, as this command has
  2167.     no effect.
  2168. Esc-^    ANSI Privacy Message.  The following characters through an Esc-\
  2169.     sequence (maximum 80 characters) are accumulated.  If running under
  2170.     DESQview, the first 40 are displayed in the notification window;
  2171.     otherwise, the accumulated characters are discarded.
  2172. Esc-_    Application Program Command.  The following characters through an
  2173.     Esc-\ sequence (maximum 80 characters) are skipped, as this command
  2174.     has no effect.
  2175. Esc-c    reset to initial state
  2176. Esc-j    save cursor position       (Heath H19)
  2177. Esc-k    restore cursor position       (Heath H19)
  2178. Esc-l    erase line           (Heath H19)
  2179. Esc-p    turn on bold characters
  2180. Esc-q    turn off bold characters
  2181. Esc-v    turn on line wrap       (Heath H19)
  2182. Esc-w    turn off line wrap       (Heath H19)
  2183. Esc-z    reset terminal emulation   (Heath H19)
  2184.  
  2185.  
  2186. --------------
  2187. ANSI Sequences
  2188. --------------
  2189.  
  2190. All of the sequences listed here consist of Esc-[ followed by zero or more
  2191. numbers separated by semicolons followed by the command letter.     Therefore,
  2192. only the command letter will be listed.     X1, X2, etc refer to the specified
  2193. numeric argument, and usually are followed by a default value in
  2194. parentheses.  All cursor positioning commands number rows and columns
  2195. starting at 1.
  2196.  
  2197. blank    extended ANSI sequence (see below)
  2198. $    extended ANSI sequence (see below)
  2199. @    insert X1 (1) blanks, shifting rest of line to the right
  2200. A    move cursor up X1 (1) lines
  2201. B    move cursor down X1 (1) lines
  2202. C    move cursor right X1 (1) positions
  2203. D    move cursor left X1 (1) positions
  2204. E    move cursor down X1 (1) lines, scroll if at bottom
  2205. F    move cursor up X1 (1) lines, scroll if at top
  2206. G    move cursor to position X1 (1) in current line
  2207. H    move cursor to row X1 (1), column X2 (1)
  2208. I    move to X1st (1) following horizontal tab position
  2209. J    case X1 (*):  0     clear from cursor to end of screen
  2210.               1     clear from start of screen to cursor
  2211.               2     clear screen
  2212.         * default is 0 for ANSI and VT52, 2 for ANSI-BBS
  2213. K    case X1 (0):  0     clear from cursor to end of line
  2214.               1     clear from start of line to cursor
  2215.               2     clear line
  2216. L    insert X1 (1) lines at cursor
  2217. M    delete X1 (1) lines at cursor
  2218. P    delete X1 (1) characters at cursor, rest of line shifts left
  2219. S    scroll up X1 (1) lines
  2220. T    scroll down X1 (1) lines
  2221. U    switch to screen X1 (1) screens later, wrapping back to screen 0
  2222.     if X1 preceded by an equal sign, switch to specified screen
  2223. V    switch to screen X1 (1) screens prior, wrapping to last screen
  2224. X    erase X1 (1) characters starting at cursor position, cursor stays put
  2225. Z    move cursor to X1st (1) preceding horizontal tab position
  2226. `    move cursor to position X1 (1) in current line
  2227. a    move cursor X1 (0) positions from current position in line
  2228. c    device attribute report
  2229.       responds by sending Esc-[-?-6-c (VT102)
  2230. d    move cursor to line X1
  2231. e    move cursor X1 (0) lines from current line
  2232. f    move cursor to row X1 (1), column X2 (1)
  2233. g    case X1 (0):  0      clear horizontal tab at current position
  2234.               3      clear all horizontal tab stops
  2235.               '>' clear all horizontal tab stops, then set tabs every
  2236.               N positions (i.e.  Esc-[->-5-g sets tabs every five
  2237.               columns)
  2238. h    select mode
  2239.     case X1 (0):  ?2  set emulation to ANSI
  2240.               ?3  select 132-column mode (if enabled by RBCONFIG)
  2241.                4  turn on insert mode
  2242.               ?5  turn on inverted video
  2243.               ?6  turn on scrolling-region-relative cursor positioning
  2244.               (origin mode)
  2245.               ?7  turn on wrap mode
  2246.               12  turn on local echo
  2247.               20  turn on newline mode (send CRLF when CR pressed)
  2248.              ?25  turn cursor on (make visible)
  2249. i    media copy
  2250.     case X1 (1):   1  dump entire screen to printer
  2251.               ?1  dump screen line containing cursor to printer
  2252.                4  exit printer controller mode [not yet implemented]
  2253.               ?4  stop echoing to printer [not yet implemented]
  2254.                5  enter printer controller mode [not yet implemented]
  2255.               ?5  start echoing to printer [not yet implemented]
  2256. l    reset mode
  2257.     case X1 (0):  ?2  set emulation to VT52
  2258.               ?3  select 80-column mode
  2259.                4  turn off insert mode
  2260.               ?5  turn off inverted video
  2261.               ?6  set top of scrolling region to topmost line, bottom
  2262.               to bottom of screen, and turn off relative cursor
  2263.               positioning (absolute cursor positioning)
  2264.               ?7  turn off wrap mode
  2265.               12  turn off local echo
  2266.               20  turn off newline mode (send only CR when CR pressed)
  2267.              ?25  turn off cursor (make invisible)
  2268.               Note: may not work on all systems or in all video
  2269.               modes
  2270. m    select graphic rendition
  2271.     for each Xn in order,
  2272.               0     reset attributes to white on black, turn off reverse
  2273.              video
  2274.               1     set bold
  2275.               4     set underlined
  2276.               5     set blinking
  2277.               7     set reverse video
  2278.               8     set invisible (black on black)
  2279.              21     turn off bold
  2280.              22     turn off bold
  2281.              24     turn off underlined
  2282.              25     turn off blinking
  2283.              27     turn off reverse video
  2284.              30     set foreground color
  2285.               -
  2286.                37
  2287.              40     set background color
  2288.               -
  2289.                47
  2290.     Note: Esc-[-m is equivalent to Esc-[-0-m
  2291. n    device status report
  2292.     case X1 (0):  5     report terminal status
  2293.              always sends Esc-[-0-n (terminal OK) to remote
  2294.               6     report cursor position
  2295.              sends string Esc-[-row-;-col-R to remote system
  2296.              15     printer status
  2297.              sends Esc-[-?-1-3-n (no printer) if no printer defined
  2298.                    Esc-[-?-1-0-n if printer is ready
  2299.                    Esc-[-?-1-1-n if printer is not ready
  2300.                  [currently always sends ?13n]
  2301.              25     report User Definable Key status
  2302.              always sends Esc-[-?-21-n (UDK's locked)
  2303.              26     report keyboard dialect
  2304.              always sends Esc-[-?-27-;-1-n (US ASCII)
  2305. r    set scrolling region to rows X1 (1) through X2 (lines-on-screen)
  2306. s    save cursor (may not be nested)
  2307. u    restore cursor
  2308. x    request terminal parameters (VT100)
  2309.     case X1 (0):  0     sends back string indicating bits, parity, speed
  2310.               1     sends back string indicating bits, parity, speed
  2311.     the string sent is
  2312.        Esc-[-<id>-;-<parity>-;-<bits>-;-<tspd>-;-<rspd>-;1;0x
  2313.     where <id> is 2 if X1 was 0 and 3 if X1 was 1
  2314.           <parity> is 1 for none, 2 for space, 3 for mark, 4 for odd,
  2315.               and 5 for even
  2316.           <bits> is 1 for 8, 2 for 7, 3 for 6, and 4 for 5 data bits
  2317.           <tspd> and <rspd> are the transmit and receive speeds:
  2318.              16 -> 110 bps
  2319.              32 -> 150 bps
  2320.              48 -> 300 bps
  2321.              56 -> 600 bps
  2322.              64 -> 1200 bps
  2323.              88 -> 2400 bps
  2324.             104 -> 4800 bps
  2325.             112 -> 9600 bps
  2326.             120 -> 19200 bps
  2327.             128 -> 38400 bps
  2328.             136 -> 57600 bps
  2329.             144 -> 115200 bps
  2330. z    reset terminal emulation (Heath H19)
  2331.  
  2332.  
  2333. -----------------------
  2334. Extended ANSI sequences
  2335. -----------------------
  2336.  
  2337. If the command character for an ANSI sequence is a blank, the NEXT character
  2338. specifies the actual operation.
  2339.  
  2340. @    scroll left X1 (1) columns
  2341. A    scroll right X1 (1) columns
  2342.  
  2343. If the command character for an ANSI sequence is a dollar sign, the NEXT
  2344. character specifies the actual operation.  These are DEC VT2xx extensions.
  2345.  
  2346. p      ANSI mode control state request
  2347.       always returns CSI X1 ; 0 $ y       (unknown mode)
  2348. u      terminal state request
  2349.       always returns DCS 1 $ ST       (no state information returned)
  2350.  
  2351.  
  2352. ---------------------
  2353. UnixWindows sequences
  2354. ---------------------
  2355.  
  2356. When RBcomm receives a ^A, the following character specifies the actual
  2357. command.  If UnixWindows is enabled, a ^A introduces a UnixWindows command
  2358. at ANY time, even in the middle of another command; when disabled, ^A is a
  2359. normal command sequence introducer.  This distinction is necessary because
  2360. both AVATAR and RBcomm private commands may include ^A within the sequence.
  2361. The UnixWindows commands are encoded as follows:
  2362.  
  2363. +---+---+---+---+---+---+---+---+
  2364. | 0 |dir|  function | parameter |
  2365. +---+---+---+---+---+---+---+---+
  2366.  
  2367. where "dir" is 0 for commands being sent to RBcomm from the remote system
  2368. and 1 for commands sent by RBcomm.  RBcomm currently supports the following
  2369. functions:  [Note: this is not yet enough to successfully run UnixWin]
  2370.  
  2371. 0  NEWW      [not yet implemented]
  2372.  
  2373. 1  KILLW  [not yet implemented]
  2374.  
  2375. 2  SELIN  The parameter of this function specifies which "window" will
  2376.       display characters received from the serial port.  UW windows
  2377.       are numbered from 1 to 7 and mapped to RBcomm screens 0 through
  2378.       6.  UW window 0 does not exist; if function 2 is invoked with
  2379.       parameter 0, the command is ignored.
  2380.  
  2381. 3  SELOUT This command is never sent by the remote host, and is thus
  2382.       ignored
  2383.  
  2384. 4  WINOPT [not yet implemented]
  2385.  
  2386. 5  META      If the parameter is 0, set the high bit of the next received
  2387.       character before processing it.  If the next character is a ^A
  2388.       UnixWindows command character, this command will apply to the
  2389.       next non-UW character (or the control character produced by
  2390.       function 6 below)
  2391.       If the parameter is one of the following, act as if the specified
  2392.       character had been received; otherwise, ignore the command.
  2393.       parameter 1 = char 129
  2394.       parameter 2 = char 145
  2395.       parameter 3 = char 147
  2396.  
  2397. 6  CTRL      if the parameter is one of the following, act as if the specified
  2398.       control character had been received; otherwise, ignore the command.
  2399.       If function 5 was received immediately prior to this command, the
  2400.       high bit will be set.
  2401.       1   ^A
  2402.       2   ^Q
  2403.       3   ^S
  2404.  
  2405. 7  MAINT  the parameter specifies one of a number of maintenance functions:
  2406.       0   ENTRY  sent by UW server on startup.  RBcomm enables the
  2407.              UnixWindows protocol on receiving this command.
  2408.       2   ASKPCL remote system requests the start of protocol negotiation.
  2409.              RBcomm responds with CANPCL 1 (the most basic protocol).
  2410.       3   CANPCL remote system specifies a protocol it is capable of
  2411.              supporting in the following byte (1Fh is added to the
  2412.              protocol number to make it printable).  If protocol 1
  2413.              specified, RBcomm responds with SETPCL 1, otherwise it
  2414.              responds with CANPCL 1.
  2415.       4   SETPCL remote system specifies a protocol which both ends are
  2416.              to use.  The protocol is sent in the next byte, with 1Fh
  2417.              added to make it printable.  As RBcomm only supports
  2418.              protocol 1, this function is currently ignored.
  2419.       7   EXIT   sent by UW server on shutdown.  RBcomm disables the
  2420.              UnixWindows protocol on receiving this command.
  2421.  
  2422.  
  2423. ------------------------
  2424. Special RBcomm sequences
  2425. ------------------------
  2426.  
  2427. When RBcomm receives a ^F, the following character specifies the actual
  2428. command.
  2429.  
  2430. ^x    display the IBM PC screen character corresponding to the control
  2431.     character
  2432. 0    turn off visual bell, ^G will beep
  2433. 1    turn on visual bell, ^G will flash the screen, but internally
  2434.     generated beeps still sound
  2435. 2    flash the screen
  2436. 3    beep even if visual bell turned on
  2437. 4    fill area.  Identical to AVATAR ^V^M (see below) but does not cancel
  2438.     insert mode.
  2439. 5    clear from cursor to end of screen
  2440. 6    repeat pattern.     Identical to AVATAR ^V^Y (see below)
  2441. :    disable the UnixWindows protocol
  2442. ;    enable the UnixWindows protocol
  2443. <    set terminal emulation to VT102/ANSI.  Does not affect any other
  2444.       settings
  2445. =    set terminal emulation to ANSI-BBS.  Does not affect any other
  2446.       settings.
  2447. >    set terminal emulation to VT52.     Does not affect any other settings.
  2448. ?    query terminal emulation type.    Sends back <127><type> where type is
  2449.       'A' for VT102/ANSI, 'B' for ANSI-BBS, or 'V' for VT52.  The type
  2450.       is converted to lower case if the UnixWindows protocol is enabled.
  2451. @    send identification (see Esc-Z)
  2452. A    [obsolete--this command no longer does anything]
  2453. B    if next character is '0' through '8' switch to the specified
  2454.     screen, provided that memory was allocated for it at startup.
  2455.     Sends a response of 127-<digit>-<status> to the remote system,
  2456.     where the digit is the screen number from the ^FB command, and
  2457.     status is 'Y' if the screen exists or 'N' if it doesn't.  It is
  2458.     the remote system's responsibility to redraw the screen if the
  2459.     response is 'N'.
  2460. C    if next character is '0' through '8' and the specified screen was
  2461.     allocated at startup, clear that screen to blanks.
  2462.  
  2463. ------------------------
  2464. AVATAR command sequences
  2465. ------------------------
  2466.  
  2467. ^V^A    set screen attribute to low seven bits of following character
  2468. ^V^B    set blink
  2469. ^V^C    move cursor up a line
  2470. ^V^D    move cursor down a line
  2471. ^V^E    move cursor left one space
  2472. ^V^F    move cursor right one space
  2473. ^V^G    clear from cursor to end of line
  2474. ^V^H<r><c>  move cursor to row <r> and column <c>, where the upper left corner
  2475.         is 1,1
  2476. ^V^I    turn on insert mode until next AVATAR command (except ^Y and ^V^Y)
  2477. ^V^J    scroll area up.     Next five characters specify number of lines to
  2478.     scroll, top margin, left margin, bottom margin, and right margin (all
  2479.     margins are based on 1,1 being the upper left corner of the screen)
  2480. ^V^K    scroll area down.  Next five characters are as for ^V^J
  2481. ^V^L    clear area.  Next three characters specify screen attribute for cleared
  2482.     area, number of lines less one, and number of columns less one.     The
  2483.     blink bit of the attribute is ignored, and the current display attribute
  2484.     is set to the attribute of the cleared area.  If the requested area
  2485.     extends beyond the current window limits, it will be truncated to fit.
  2486. ^V^M    fill area.  Next four characters specify screen attribute for filled
  2487.     area, character to fill with, number of lines less one, and number of
  2488.     columns less one.  The current display attribute is set to the filled
  2489.     attribute with blinking turned off.  If the requested area extends
  2490.     beyond the current window limits, it will be truncated to fit.
  2491. ^V^N    delete character at cursor position, shifting the remainder of the
  2492.     line.
  2493.  
  2494. The following commands (except for ^V^Y) are Level 1 extensions.  They
  2495. are not fully implemented, and are not expected to be completely
  2496. correct, as the official specifications have just (1/20/91) been
  2497. published, and I have not had time to implement and test everything.  In
  2498. cases where the official specs differ from the sketchy information I had
  2499. to work with, the behavior will be incorrect.  Those commands marked
  2500. [not implemented] will merely be skipped without any further processing.
  2501.  
  2502. ^V^O    turn clockwise mode on [not implemented]
  2503. ^V^P    not used
  2504. ^V^Q    query.    Next character specifies the type of query
  2505.     ^Q  get driver version info.  Returns the string
  2506.            "AVT0,rbcommN.NNc\r"
  2507.         where N.NN is the RBcomm version and c is the capability byte
  2508.         (see Esc-Z).  This identifies RBcomm as complying with the AVATAR
  2509.         level 0 specification, since level 1 support is still incomplete.
  2510. ^V^R    reset AVATAR [not implemented]
  2511. ^V^S    make a sound.  The next three characters specify the note number,
  2512.     octave, and duration in tenths of a second.  The note is computed as
  2513.         (note-'A')*2 + sharp
  2514.     The current implementation does not queue any tones unless RBcomm is
  2515.     running under DESQview (which can queue notes).
  2516. ^V^T    highlight character at cursor position.     Next character specifies new
  2517.     attribute.
  2518. ^V^U    highlight window.  Next two characters specify the window handle and
  2519.     new attribute.
  2520. ^V^V    define window.    Next six characters specify the window handle, default
  2521.     attribute, top margin, left margin, bottom margin, and right margin.
  2522.     The default attribute is also the initial current attribute for the
  2523.     new window.  Note: window 0 can not be redefined.
  2524. ^V^W    switch to window.  The next character specifies the handle of the
  2525.     window to switch to.
  2526. ^V^X    flush input [not implemented]
  2527. ^V^Y    repeat pattern.     The following character specifies the length of the
  2528.     pattern to be repeated, followed by the pattern, and finally followed
  2529.     by a single character indicating the number of times to repeat the
  2530.     pattern.  The pattern may contain command sequences, but is limited
  2531.     to 80 characters (longer patterns are truncated to 80 characters).
  2532. ^V^\    go to bed [not implemented]
  2533. ^V^]    wake up [not implemented]
  2534. ^V^^    start vertical output [not implemented]
  2535. ^V^_    start horizontal output [not implemented]
  2536. ^V!    poke char/attr to physical screen.  The next four characters specify
  2537.     the character and attribute to poke, and the row and column at which
  2538.     to display that character and attribute.
  2539. ^V"    turn off line wrap
  2540. ^V#    wrap in zigzag mode [not implemented]
  2541. ^V$    turn on line wrap
  2542. ^V%    reverse direction of linefeeds [not implemented]
  2543. ^V&    linefeeds move in normal direction [not implemented]
  2544. ^V'    set cursor type.  The next character specifies the cursor's shape:
  2545.       ^A return to default (startup) cursor shape
  2546.       ^B make cursor invisible (does not work on all systems in all modes)
  2547.       ^C block cursor, covering entire character cell
  2548.       otherwise, this command is ignored
  2549. ^V(    output in forward direction [not implemented]
  2550. ^V)    output in reverse direction [not implemented]
  2551. ^V*    system pause.  The next character specifies the    duration in tenths of
  2552.     a second.  Contrary to the official AVATAR specs, RBcomm treats zero
  2553.     as 256 tenths seconds, rather than a full hour.     This is both more
  2554.     consistent and more secure, as neither keyboard nor serial port
  2555.     activity is possible during a system pause.
  2556. ^V+    insert a line
  2557. ^V,    insert a blank column at the current cursor position
  2558. ^V-    delete current line
  2559. ^V.    delete current column
  2560. ^V/    set/reset static mode [not implemented]     The next character specifies
  2561.     whether or not the cursor should be advanced after outputting a
  2562.     character to the screen.
  2563. ^V0    highlight from cursor to end of line.  The next character specifies
  2564.     the new attribute to be applied to the rest of the line.
  2565. ^V1    highlight from start of line to cursor.     The next character specifies
  2566.     the new attribute to be applied to the beginning of the line.
  2567. ^V:    keyboard mode.    The next character specifies the mode.    RBcomm
  2568.     always returns ^V:0 (default mode), as it does not support this
  2569.     command.
  2570. ^V<    scroll left.  The next five characters specify the number of columns
  2571.     to scroll, the top margin, left margin, bottom margin, and right
  2572.     margin of the area to scroll.
  2573. ^V=    set parser mode.  If the next character ANDed with 1Fh is ^R or ^C,
  2574.     set the mode to raw or cooked, respectively.  In cooked mode, the
  2575.     character immediately following a ^P is ANDed with 1Fh, and the result
  2576.     is treated as if it had arrived from the remote system instead of the
  2577.     ^P sequence.
  2578. ^V>    scroll right.  The next five characters are as for ^V<
  2579. ^V?    peek at physical screen.  The next two characters specify the row and
  2580.     column at which to peek.  RBcomm returns the poke command (see ^V!)
  2581.     needed to restore the given character position to its current state.
  2582.  
  2583. -----------------------------------------------------------------------------
  2584. Acknowledgements
  2585. ----------------
  2586.  
  2587. Thanks to Thomas Zerucha for his numerous comments and suggestions, many of
  2588. which have been implemented.
  2589.  
  2590. Thanks to Walter Cox for his comments and suggestions on v2.81, one of the
  2591. included keyboard bindings, and his patience in testing new versions.
  2592.  
  2593. Thanks to Mike Weaver for his comments and suggestions, some of which have
  2594. been implemented.
  2595.  
  2596. Thanks to Dave Doren for banging on the macro language and reporting bugs
  2597. and possible enhancements.
  2598.  
  2599. -----------------------------------------------------------------------------
  2600. Program History
  2601. ---------------
  2602.  
  2603. v2.72  9/3/89    first public release
  2604. v2.81  10/4/89    second public release
  2605. v3.01  1/6/90    third public release
  2606. v3.12  4/28/90    fourth public release
  2607. v3.21  7/29/90    fifth public release
  2608.  
  2609. v3.22  9/9/90   switched from spawnlo() to spawnlpo(), adjusted Alt-G
  2610.         added DISPLAY command, %N variable expansion
  2611.         stubbed out AVATAR level 1 support
  2612. v3.23  9/23/90    enhanced input line editor
  2613.         fixed subtle bug in environment reading
  2614.         added MDIAL command, %w variable expansion
  2615.         continued adding AVATAR level 1 support
  2616. v3.24  10/6/90    size optimizations
  2617.         added PACECHAR command, SWAPDIR environment variable
  2618. v3.25  10/21/90 added more AVATAR level 1 functions, swap to EMS
  2619.         fixed scrolling-region/cursor-move interaction bug
  2620.         internal changes
  2621. v3.26  11/25/90 more internal changes and size optimizations
  2622.         OPEN_LOG in OnLoad macro now works in all cases
  2623. v3.27  12/9/90    added SELECT_SCREEN command on Alt-W
  2624.         more UnixWindows functions
  2625. v3.28  12/21/90    added commandline options
  2626.         some more AVATAR level 1 functions
  2627.         new DVPWIDTH program for 132 column DESQview windows
  2628. v3.30  1/13/91    completely rewrote file browser, implemented scrollback
  2629.         FILES command now uses new browser
  2630.         added SCROLLBACK, SAVE_SCREEN commands
  2631. v3.31  2/3/91    bugfixes to scrollback
  2632.         some more AVATAR level 1 functions
  2633.         (sixth public release)
  2634.  
  2635. v3.32  2/17/91  restored command entry from help screen
  2636.         added %/ and %\ expansions
  2637.         dialing dir now uses pager, capacity increased to 40 entries
  2638. v3.33  3/17/91    removed SAVE_MACRO/UI_MENU, saving 380 bytes
  2639.         simplified macro learning to single key, saving 330 bytes
  2640.         macro file format changes
  2641.         current macro file now kept if new file not found or invalid
  2642.         new compiled dialing directory allows up to 250 entries
  2643. v3.34  4/10/91    directory pager can now back up on very large directories
  2644.         scrollback buffer can now be written to a file
  2645.         added ALARM, MUSIC, PLAY, SOUND, TFLUSH commands
  2646. v3.35  3/15/92    rearranged RBcomm private terminal functions
  2647.         fixed scrollback and pager problems
  2648.         added AVATAR, EXPAND_BLANK, and RBCOMM_CMDS commands
  2649.         added optional BIOS writes for serial input
  2650.         now supports 115200 bps
  2651.         no longer randomly drops behind actual end of serial input at
  2652.           extremely high speeds
  2653. v3.36  8/23/92    now hide DESQview mouse pointer while inside RBcomm window
  2654.         speed optimizations
  2655.         reworked RBCONFIG for greater ease of use
  2656.         enhanced DIALDIR and merged it into RBCONFIG
  2657. v3.40  1/3/93    fixed RBCONFIG serial-port-info update & dialdir Move bugs
  2658.         added DVEXEC, TRIM, LTRIM, and RTRIM commands
  2659.         added #DOWNLOAD_x and #UPLOAD_x metacommands, %F expansion
  2660.         the elusive dialing rollover bug has been squashed
  2661.         the number pad with NumLock on can now be distinguished
  2662.           from the typewriter number keys using the NP_n keynames
  2663.         MACRO.COM can no longer decompile, but can compile
  2664.           multiple macro files at one time
  2665.         (seventh public release)
  2666.